我知道专门化功能模板是错误的
这个问题是出于好奇。
说我有一个函数模板
template<typename T>
void foo(T){}
我专攻它
template<>
void foo(std::initializer_list<int>){}
我称之为
foo({1, 2, 3});
我收到指向主模板的错误“没有与括号括起来的初始值设定项列表匹配的 foo 实例”(重载工作正常)
但是如果我将函数基础模板更改为将 initializer_list 作为参数,一切都可以。
到底发生了什么?
编译器:gcc 4.8.2 有用的链接