【问题标题】:My compiler allows "T&...". Is this an extension?我的编译器允许“T&...”。这是一个扩展吗?
【发布时间】:2011-06-21 22:38:01
【问题描述】:

当以下工作时我很惊讶

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

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

【问题讨论】:

    标签: c++ c++11 ellipsis


    【解决方案1】:

    你调用了这个函数吗?模板函数在您调用它们之前不会被编译。 在 Visual Studio 2010 中,IntelliSense 显示该函数的真实语法是

    template <class T> void f(T&, ...)
    

    闻起来像旧的变量参数语法。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-16
        • 2010-11-01
        • 1970-01-01
        • 2019-04-21
        相关资源
        最近更新 更多