(root)/
gcc-13.2.0/
libstdc++-v3/
testsuite/
20_util/
optional/
84601.cc
// { dg-do compile { target c++17 }  }

#include <optional>
#include <utility>

using pair_t = std::pair<int, int>;
using opt_t = std::optional<pair_t>;

static_assert(std::is_copy_constructible_v<opt_t::value_type>);
static_assert(std::is_copy_assignable_v<opt_t::value_type>);

static_assert(std::is_copy_assignable_v<opt_t>); // assertion fails.

class A
{
  void f(const opt_t& opt)
  {
    _opt = opt;
  }

  opt_t _opt;
};