https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87108
Bug ID: 87108 Summary: Template partial specialization is ignored Product: gcc Version: 8.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: ghabriel.nunes at hotmail dot com Target Milestone: --- Created attachment 44599 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=44599&action=edit Code to reproduce the problem Compiling the attached code with g++ bug.cpp (no other flags required) results in two errors: bug.cpp: In function ‘ExampleScaling foo()’: bug.cpp:26:17: error: could not convert ‘{42}’ from ‘<brace-enclosed initializer list>’ to ‘ExampleScaling’ {aka ‘HowAboutNo’} return { 42 }; ^ bug.cpp: In function ‘int main(int, char**)’: bug.cpp:30:24: error: ‘using ExampleScaling = scale_t<1000, amount<1> >’ {aka ‘struct HowAboutNo’} has no member named ‘value’ std::cout << foo().value << std::endl; ^~~~~ I've tested all versions from 6.1 to 8.2 (in godbolt) and 8.1.1 (locally) and all of them yield the same result. The code compiles fine in Clang and MSVC.