https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106239

--- Comment #4 from Dan Raviv <dan.raviv at gmail dot com> ---
C does meet the CopyInsertible requirements:

https://godbolt.org/z/8j7KcbhdM

#include <memory>

class C {
    const int m_x;
public:
    C(int x) : m_x (x) {}
};

int main()
{
    // C is CopyInsertable:
    {
        alignas(C) char mem[sizeof(C)];
        auto v = C(42);
        C* c = ::new((void*)mem) C(v);
        c->~C();
    }
    {
        alignas(C) char mem[sizeof(C)];
        auto v = C(42);
        C* c = std::construct_at ((C*)mem, v);
        c->~C();
    }
}

Reply via email to