模板参数作为朋友

Arm*_*yan 8 c++ templates friend c++11

在C++ 03中,以下是非法的,尽管有些编译器支持它.

template <class T>
class X
{
    friend T;
};
Run Code Online (Sandbox Code Playgroud)

这是否已在C++ 11中合法化?(抱歉,我没有时间自己阅读草稿,只是希望有人知道这一点)

Pra*_*ian 12

从N3291的§11.3,3中可以看出:

template <typename T> class R {
  friend T;
};

R<C> rc; // class C is a friend of R<C>
R<int> Ri; // OK: "friend int;" is ignored
Run Code Online (Sandbox Code Playgroud)

所以它在C++ 11中是合法的.

  • 我很高兴`朋友int;`被忽略:) (4认同)