如何在类中键入一个类名

时间:2014-07-28 17:04:49

标签: c++

以下哪种语法是首选或在法律上是正确的:

template< class T >
struct S
{
    typedef std::vector< S       > V;
//  typedef std::vector< S< T >  > V;

Visual C ++和gcc接受,但C ++ Builder XE3报告&#34; E2299无法生成模板专业化&#34;第一个错误。

1 个答案:

答案 0 :(得分:7)

两者都是正确的;类名注入到类的范围内:What feature of C++ lets template classes refer to themselves without template arguments?

偶尔使用该功能;例如,标准在标准库的规范中使用它,以简洁。为清楚起见,您可以考虑在自己的代码中避免使用它。