我很困惑,请求你的帮助。 VC2005SP1吞下这个(剥离的)代码,但是gcc 4.0.1拯救了...请指出我明显的错误? TIA!
template<typename BCT, typename UIDT>
class Factory
{
public:
template<typename CT>
bool Register(UIDT UniqueID)
{
if (UniqueID > 10)
return(false);
CreateObject2<BCT, CT>;
return(true);
}
};
template <typename MC, typename MT>
class Manager : public Factory<MC, MT>
{
public:
bool RegisterType(const MT Type, const std::string TypeName)
{
return Factory<MC, MT>::Register<MC>(Type); // gcc claims "expected primary-expression before '>' at this point
}
};
答案 0 :(得分:5)
VS很善良。
return Factory<MC, MT>::template Register<MC>(Type);
应该在两个编译器下工作。