// { dg-do compile { target c++17 } } #include #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; };