8template<
typename Op>
struct Iter {
17 SECTION(
"semiregular_t<lambda>") {
21 auto lambda = [&](
int i) {
return i +
g; };
22 auto l2 = lambda; (void)l2;
27 auto iter1 =
Iter(std::move(lambda));
30 decltype(iter1) iter3;
31 (void)iter2; (void)iter3;
33 SECTION(
"semiregular_t<unique_ptr<int>>") {
35 using T = std::unique_ptr<int>;
36 T t1 = std::make_unique<int>(43);
41 ST st1 = std::move(t1);
43 ST st2 = std::move(st1);
std::conditional_t< std::is_default_constructible_v< T > &&std::is_copy_assignable_v< T >, T, sreg_impl::semiregular< T > > semiregular_t