https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102916
--- Comment #2 from Darrell Wright <Darrell.Wright at gmail dot com> --- The constexpr value returned is different depending on the compiler. If one uses clang and gcc this leads to an ODR issue as void bar( ) { if constexpr( foo<[]{ return std::sqrt( 4.0 ); }>( ) ) { doA( ); } else { doB( ); } }