为什么以下代码不起作用(使用VS2013)?
class Test1
{
public:
template<typename T>
using my_type = T;
};
template<typename T, typename V>
class My : public T
{
public:
using t_type = T;
using my_type2 = t_type::my_type<V>;
};
int main()
{
const My<Test1, double>::my_type2 x = 5.5;
return 0;
}
Test1 :: my_type将具有更复杂的类型。我将是一个基于策略的类,其中Test1将是其中一个策略。 my_type2应该根据策略成为特定类型。并且Test1不能直接采用V类型的模板。谢谢。
答案 0 :(得分:2)
欢迎来到C ++的黑暗角落
更改此
using my_type2 = t_type::my_type<V>;
到此:
using my_type2 = typename t_type::template my_type<V>;