当我使用clang和gcc编译以下代码时,T
的推断结果不同。
#include<initializer_list> //for clang
//to see how T is deduced(form compiler error).
template<typename T>
void foo(T);
int main() {
auto var1{2};
foo(var1);
}
这是我得到的内容。
clang 3.6(c++11/c++14)
gcc 4.9(c++11/c++14)
T = std::initializer_list<int>
gcc 5.1(c++11/c++14)
T = int
我认为T
应该是std::initializer_list<int>
。
为什么在gcc 5.1中T = int
?