// { dg-options "-std=gnu++17" } // { dg-do compile { target c++17 } } #include using pair_t = std::pair; using opt_t = std::optional; static_assert(std::is_copy_constructible_v); static_assert(std::is_copy_assignable_v); static_assert(std::is_copy_assignable_v); // assertion fails. class A { void f(const opt_t& opt) { _opt = opt; } opt_t _opt; };