std::inplace_vector<T,N>:: operator=

From cppreference.com
constexpr inplace_vector & operator = ( const inplace_vector & other ) ;
(1) (since C++26)
constexpr inplace_vector & operator = ( inplace_vector && other )
noexcept ( /* see below */ ) ;
(2) (since C++26)
constexpr inplace_vector & operator = ( std:: initializer_list < T > init ) ;
(3) (since C++26)

Replaces the contents of the inplace_vector .

2) Move assignment operator . Also a trivial move assignment operator , if std:: inplace_vector < T, N > has a trivial destructor , and std:: is_trivially_move_constructible_v < T > && std:: is_trivially_move_assignable_v < T > is true . Replaces the contents with those of other using move semantics (i.e., the data in other is moved from other into this container). other is in a valid but unspecified state afterwards.
3) Replaces the contents with those identified by initializer list init .

Parameters

other - another inplace_vector to be used as source to initialize the elements of the container with
init - initializer list to initialize the elements of the container with

Complexity

1,2) Linear in the size of * this and other .
3) Linear in the size of * this and init .

Exceptions

2)
3) Throws std::bad_alloc if init. size ( ) > N .

Example

#include <initializer_list>
#include <inplace_vector>
#include <new>
#include <print>
#include <ranges>
#include <string>
 
int main()
{
    std::inplace_vector<int, 4> x({1, 2, 3}), y;
    std::println("Initially:");
    std::println("x = {}", x);
    std::println("y = {}", y);
 
    std::println("Copy assignment copies data from x to y:");
    y = x; // overload (1)
    std::println("x = {}", x);
    std::println("y = {}", y);
 
    std::inplace_vector<std::string, 3> z, w{"\N{CAT}", "\N{GREEN HEART}"};
    std::println("Initially:");
    std::println("z = {}", z);
    std::println("w = {}", w);
 
    std::println("Move assignment moves data from w to z:");
    z = std::move(w); // overload (2)
    std::println("z = {}", z);
    std::println("w = {}", w); // w is in valid but unspecified state
 
    auto l = {4, 5, 6, 7};
    std::println("Assignment of initializer_list {} to x:", l);
    x = l; // overload (3)
    std::println("x = {}", x);
 
    std::println("Assignment of initializer_list with size bigger than N throws:");
    try
    {
        x = {1, 2, 3, 4, 5}; // throws: (initializer list size == 5) > (capacity N == 4)
    }
    catch(const std::bad_alloc& ex)
    {
        std::println("ex.what(): {}", ex.what());
    }
}

Possible output:

Initially:
x = [1, 2, 3]
y = []
Copy assignment copies data from x to y:
x = [1, 2, 3]
y = [1, 2, 3]
Initially:
z = []
w = ["🐈", "💚"]
Move assignment moves data from w to z:
z = ["🐈", "💚"]
w = ["", ""]
Assignment of initializer_list [4, 5, 6, 7] to x:
x = [4, 5, 6, 7]
Assignment of initializer_list with size bigger than N throws:
ex.what(): std::bad_alloc

See also

constructs the inplace_vector
(public member function)
assigns values to the container
(public member function)