https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110323
--- Comment #6 from Marek Polacek <mpolacek at gcc dot gnu.org> --- Extended test. I think all 4 should be emitted. ``` // PR c++/110323 template<bool B, class T, class F> struct conditional { using type = T; }; template<class T, class F> struct conditional<false, T, F> { using type = F; }; constexpr int VAL = 1; static constexpr int getval () { return 1; } template<typename> constexpr int TVAL = 1; static struct S { constexpr operator bool() { return true; } } s; struct foo { template <int B> void bar(typename conditional<B == VAL, int, float>::type arg) { } template <int B> void baz(typename conditional<B == getval (), int, float>::type arg) { } template <int B> void qux(typename conditional<B == TVAL<int>, int, float>::type arg) { } template <int B> void lox(typename conditional<B == s, int, float>::type arg) { } }; template void foo::bar<1>(int arg); template void foo::baz<1>(int arg); template void foo::qux<1>(int arg); template void foo::lox<1>(int arg); ```