2

我知道专门化功能模板是错误的

这个问题是出于好奇。

说我有一个函数模板

template<typename T>
void foo(T){}

我专攻它

template<>
void foo(std::initializer_list<int>){}

我称之为

foo({1, 2, 3});

我收到指向主模板的错误“没有与括号括起来的初始值设定项列表匹配的 foo 实例”(重载工作正常)

但是如果我将函数基础模板更改为将 initializer_list 作为参数,一切都可以。

到底发生了什么?

编译器:gcc 4.8.2 有用的链接

4

0 回答 0