拿这个代码:
template<typename T>
int foo()
{
std::cout << "foo called" << std::endl;
return 10;
};
template<typename... Ts>
std::vector<int> bar(Ts... ts)
{
std::vector<int> vec{foo<Ts>()...};
return vec;
};
int main()
{
std::vector<int> vec = bar(1,2,3,4);
}
上面的代码输出:
foo called
foo called
foo called
foo called
这怎么可能?我以为我已经理解了模板参数包,但是该行如何std::vector<int> vec{foo<Ts>()...};
导致foo
被多次调用?是否foo
返回参数包,因为我们...
在函数调用上使用了运算符?
这段代码是怎么回事?