http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52768
Bug #: 52768 Summary: Unable to get pointer to template function Classification: Unclassified Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: kmakaro...@gmail.com GCC 4.6.3, as well as GCC 4.8 cannot resolve template method, even if it is explicitly instantiated. The code to explain the problem is: template <class T> struct Creator { template <typename...Ts> static std::shared_ptr<T> create(Ts&&... vs) { std::shared_ptr<T> t(new T(std::forward<Ts>(vs)...)); return t; } }; class Car: public Creator<Car> { private: friend class Creator<Car>; Car() { } }; int main() { std::function< std::shared_ptr<Car> () > createFn=&Car::create<>; return 0; } This results in following compiler error: error: conversion from β<unresolved overloaded function type>β to non-scalar type βstd::function<std::shared_ptr<Car>()>β requested However it compiles fine on Clang3.0 and 3.1.