c++ - 为什么这个私有(private)模板函数可以编译? -> 编译器错误 VS 2009

标签 c++ templates compiler-bug

这在 VS 2009 中编译没有问题?我傻吗? GCC 发出警告,模板是私有(private)的......? 我错过了什么?

#include <iostream>

using namespace std;

class A
{
private:
    template<typename T>
    A& operator<<(const T & v)
    {
        cout << v << endl;
        return *this;
    }
};

int main()
{
   A a;
   a << 4;
   system("pause");
}

最佳答案

Microsoft 承认了这个错误并声称它将在编译器的下一个主要版本中修复(我读作 VC11/VS-whatever-is-after-2010 - 可能不是 VC10/VS2010 的服务包):

从评论来看,似乎已经对内部编译器构建进行了修复。

关于c++ - 为什么这个私有(private)模板函数可以编译? -> 编译器错误 VS 2009,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5824819/

相关文章:

c++ - 错误 C2079 : 'Toto::a' uses undefined class 'foo'

c++ - Mac OS X 上的 MetaTrader 4 结合 C++ 或 R

c++ - 当你完美转发时,typename T 变成 T& 或 T&&,但当你不这样做时,T 根本不是引用。如何?

c++ - const char* 的模板方法特化

c++ - 这是gcc的错误吗?

c++ - lambda捕获的"this"不正确。 GCC 编译器错误?

c++ - 带参数的构造函数初始化

c++ - 无法从闭包内传递 `std::array`

c++ - 复制构造函数中的模板

c++ - std::call_once() 在 callable 抛出第一次调用后在第二次调用时挂起