// PR c++/102670 // { dg-do compile { target c++20 } } namespace ns { struct S { }; template constexpr int adl(const S &) { return I; } } namespace redirect { template concept can_call_adl = requires(T t) { adl(t); }; template struct adl_fn { template T> constexpr decltype(auto) operator()(T t) const { return adl(t); } }; namespace { template constexpr inline adl_fn adl{}; } } int main() { static_assert(redirect::can_call_adl); redirect::adl<3>(ns::S{}); }