https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95986
Bug ID: 95986 Summary: Partial specialization of class template is not found when class template has NTTP of class type Product: gcc Version: 10.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: bence.kodaj at gmail dot com Target Milestone: --- In the code below I would expect the static assertion __not__ to fail, but it does. OS: Ubuntu 18.04. Godbolt: https://godbolt.org/z/absUyx --------------------------- #include <type_traits> template< typename, template< auto... > typename > struct IsInstantationOf : std::false_type {}; template< template< auto... > typename Template, auto... Arg > struct IsInstantationOf< Template< Arg... >, Template > : std::true_type {}; template< std::size_t N > struct StrLiteral { constexpr StrLiteral( const char ( & )[ N ] ) {} }; template< StrLiteral > struct Template {}; int main() { const auto a = StrLiteral( "a" ); static_assert( IsInstantationOf< Template< a >, Template >::value ); return 0; } ---------------------------