sdkrystian wrote: I've manually reduced the standalone reproducer to the following: ```cpp template<int N> struct A { template<typename T> static constexpr bool f(); };
template<> template<typename T> constexpr bool A<0>::f() { return A<1>::f<T>(); } template<> template<typename T> constexpr bool A<1>::f() { return true; } template<int N> constexpr bool g() { return A<N>::template f<int>(); // note: undefined function 'f<int>' cannot be used in a constant expression } template bool g<0>(); static_assert(g<1>()); // error: static assertion expression is not an integral constant expression ``` The error does not occur if the explicit instantiation definition (i.e. `template bool g<0>()`) is removed. I'm looking into it. https://github.com/llvm/llvm-project/pull/106585 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits