http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52768
Jonathan Wakely <redi at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |rejects-valid
Status|UNCONFIRMED |NEW
Last reconfirmed| |2012-03-29
Summary|Unable to get pointer to |cannot resolve address of
|template function |function template with
| |empty template argument
| |list
Ever Confirmed|0 |1
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-03-29
13:09:10 UTC ---
Same problem using a default template argument instead of a parameter pack:
template<typename Res>
struct function
{
template<typename F> function(F) { }
};
template <class T>
struct Creator
{
template <typename Ts = int>
static T* create(Ts vs)
{
return new T(vs);
}
};
class Car:
public Creator<Car>
{
private:
friend class Creator<Car>;
Car(int) { }
};
int main()
{
function< Car* () > createFn=&Car::create<>;
}
(technically this is a C++11 bug, but G++ supports variadic templates and
default template arguments for functions in c++98 mode)