c++ - 我的编译器允许 "T&..."。这是一个扩展吗?

标签 c++ c++11 ellipsis

当以下工作发生时我很惊讶

template<typename T>
void f(T &...);

我认为我必须将“T”声明为“typename ...T”,并且它只适用于 C++0x。但以上是在严格的 C++03 模式下编译的。怎么回事?

最佳答案

这只是糟糕的旧 C 可变参数语法;语法允许省略逗号。以下是等价的:

int printf(const char* fmt, ...);
int printf(const char* fmt...);

关于c++ - 我的编译器允许 "T&..."。这是一个扩展吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4908132/

相关文章:

c++ - 在LLVM中获取全局字符串值

C++11 隐式移动构造函数

C++:使用 "strtol"检查字符串是否为有效整数

c++ - 将 boost 与 Visual Studio 和 vcpkg 链接时出错

CSS 文本溢出 - 如果文本扩展到第 (n) 行,则应用省略号

c++ - catch (...) 是否在 throw 上工作;没有对象?

c# - 通过托管 C++ 包装器从非托管 C++ dll 运行 C# 函数

java - C和Java中的逻辑差异

html - 省略号不起作用

c++ - GetThemeFont 函数不工作