// The from_range_t default ctor should not break the PR99599 workaround // { dg-do compile { target c++20 } } template struct S { T t; }; template concept C = sizeof(S) > 0; struct I; struct from_range_t { explicit from_range_t() = default; }; inline constexpr from_range_t from_range; template concept FromRange = __is_same_as (T, from_range_t); //#define WORKAROUND #ifdef WORKAROUND template void f(U, T*); #else template void f(from_range_t, T*); #endif void f(...); void g(I* p) { ::f(0, p); }