Oracle Solaris Studio 12.2 发行版的新增功能

不再忽略模板语法错误

下面的模板语法是无效的,但 Sun C++ 编译器 4 和 5.0 版并不报告这个错误。在标准模式(缺省模式)下编译时,C++ 编译器 5.1 版本及以后的所有版本都会报告这个语法错误。


        template<class T> class MyClass<T> { ... }; // definition error
        template<class T> class MyClass<T>; // declaration error

在这两种情况下,MyClass<T> 中的 <T> 无效,必须删除,如下例所示:


        template<class T> class MyClass { ... }; // definition
        template<class T> class MyClass; // declaration