// { dg-do run { target c++26 } } #include #include #include template class Polymorhpic> constexpr void test_access() { const std::vector src{1, 2, 3, 4, 5}; Polymorhpic> i(src); auto const& ci = i; VERIFY( *i == src ); VERIFY( *ci == src ); VERIFY( *std::move(ci) == src ); auto&& vr = *std::move(i); static_assert( std::is_same_v&> ); VERIFY( vr == src ); VERIFY( *i == src ); } template struct PublicBase : std::polymorphic { using std::polymorphic::polymorphic; }; template class PrivateBase : std::polymorphic { public: using std::polymorphic::polymorphic; using std::polymorphic::operator*; using std::polymorphic::operator->; }; constexpr bool test_all() { test_access(); test_access(); test_access(); return true; } int main() { test_all(); // static_assert(test_all()); }