我正在写一个功能模板

template<typename ...T>
void f(T ...t) {
  X x(t...);
  // ...
}

当我查看它时,我想知道调用f()会发生什么。烦恼的解析会使x成为函数声明吗?编译器似乎使其成为变量。有人可以帮我确定吗?

最佳答案

空括号(())仅在源代码中这样写时才使其成为函数声明。
§14.5.3 [temp.variadic] p6也提到了这一点:



请参见示例代码中的第二条注释。

关于c++ - X x(t…)是否可以导致带有复杂解析的函数声明?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13025535/

10-10 22:16