Pot*_*ter 4 c++ inheritance templates typedef
[class.derived]的第一段说基类说明符,
如果找到的名称不是类名,则程序格式错误.
但是,一个简单的测试显示Comeau并且g++ -ansi -pedantic
都接受typedef-name作为基础.一个简单grep -r '[^:]: mpl'
的Boost标题显示,流行的库通常依赖于这种行为.
有没有编译器实际上拒绝typedef
了基类说明符中的某个类?GCC甚至检查基类类型不是const
,这改进了非标准功能.
有解决方法吗?我唯一能想到的是用C++ 11别名模板替换typedef.模板化的别名声明声明了一个模板名称,然后可以成为一个类名...我想.这可能需要alias-declaration的伪参数.
也许应该调整标准以匹配编译器的一致行为.DR有吗?