Why isn't it possible to define a class member of type std::optional<A> in class A?
Example:
#include <optional>
class A {
public:
A(std::optional<A> optional = {}) : optional_(optional) { }
~A() = default;
private:
std::optional<A> optional_;
};
Compiler error:
error: incomplete type 'A' used in type trait expression
: public integral_constant<bool, __is_trivially_destructible(_Tp)> {};
^
error: incomplete type 'A' used in type trait expression
: public integral_constant<bool, __is_constructible(_Tp, _Args...)>
^