https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104111
Eric Estievenart <steve+gcc at tecwec dot eu> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |steve+gcc at tecwec dot eu --- Comment #9 from Eric Estievenart <steve+gcc at tecwec dot eu> --- By the way, the following code exhibits another related weirdness, without access control being involved: ``` #include <concepts> struct Op { void operator()( auto x ) const = delete; // want only explicit customization in scope }; struct S {}; static_assert( !std::invocable<Op, S> ); template<> void Op::operator()( S ) const {} // now Op is invocable on S static_assert( std::invocable<Op, S> ); // so should not fail ! but... ``` (https://godbolt.org/z/Wa6rxeMvP) Commenting the first assert makes the second suddenly pass... Quantum physicist would say "spooky action at a distance" ;-) Hope this helps, Best.