https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64603
Bug ID: 64603 Summary: [5 Regression] bogus error "no matching function for call to ..." with templates Product: gcc Version: 5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: janus at gcc dot gnu.org Created attachment 34452 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34452&action=edit source file The attached source file compiles fine with g++ 4.9.1, 4.8.3 and 4.7.4. However, it is rejected with current trunk builds: $ g++-5.0 logging.cc -std=c++11 logging.cc: In function ‘void create_all_loggers()’: logging.cc:33:62: error: no matching function for call to ‘create_all_loggers_impl()’ create_all_loggers_impl<std::tuple_size<AreaTuple>::value>(); ^ logging.cc:26:52: note: candidate: template<long unsigned int index, int <anonymous> > typename std::enable_if<(index == 0)>::type create_all_loggers_impl() inline typename std::enable_if<(index == 0)>::type create_all_loggers_impl() {} ^ logging.cc:26:52: note: template argument deduction/substitution failed: logging.cc: In substitution of ‘template<long unsigned int index, int <anonymous> > typename std::enable_if<(index == 0)>::type create_all_loggers_impl() [with long unsigned int index = 1ul; int <anonymous> = <missing>]’: logging.cc:33:62: required from here logging.cc:26:52: error: no type named ‘type’ in ‘struct std::enable_if<false, void>’ logging.cc:30:52: note: candidate: template<long unsigned int index, int longest_name> typename std::enable_if<(index != 0)>::type create_all_loggers_impl() inline typename std::enable_if<(index != 0)>::type create_all_loggers_impl() {} ^ logging.cc:30:52: note: template argument deduction/substitution failed: logging.cc:29:61: in constexpr expansion of ‘find_longest_logger_name<1ul>()’ logging.cc:29:62: error: ‘(((int)(((unsigned int)5ul) + 4294967295u)) > 0)’ is not a constant expression int longest_name = find_longest_logger_name<index>()> ^ logging.cc:29:62: note: in template argument for type ‘int’