Этот код выдает предупреждение: «для объявления требуется глобальный конструктор [-Wglobal-constructors]» *
// Compile with -Wglobal-constructors
class T {
public:
constexpr T(int* p) : ptr_(p) {}
T(const T& other) : T(other.ptr_) {}
private:
int* ptr_;
};
struct MyStruct {
int x;
T y;
};
MyStruct s[] {{ 123, nullptr },{ 234, nullptr }};
Я думал, что добавление constexpr T(std::nullptr_t) : ptr_(nullptr) {}
позаботится об этом, но нет. Вместо этого делает конструктор копирования constexpr
, что меня озадачивает. То же относится и к конструктору перемещения, если он был.