P34
template <typename T, bool isPolymorphic>
class NiftyContainer
{
...
typedef Select<isPolymorphic, T*, T>::Resault ValueType;
...
};
这段代码在编译时会出现下面警告,并且ValueType缺少类型说明符错误
warning C4346: “Select<isPolymorphic, T*, T>::Resault" 依赖名称不是类型
正确的写法是
template <typename T, bool isPolymorphic>
class NiftyContainer
{
...
typedef typename Select<isPolymorphic, T*, T>::Resault ValueType;
...
};
typename向编译器说明,Resault是类型而不同其他别的,这在使用非template参数类型时非常有用。具体可参考《C++ Template》5.1节。
转载注明出处:blog.youkuaiyun.com/ani_di