使用基类声明的c ++模板

时间:2015-04-20 12:33:07

标签: c++ templates c++11

为什么以下代码不起作用(使用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类型的模板。谢谢。

1 个答案:

答案 0 :(得分:2)

欢迎来到C ++的黑暗角落

更改此

using my_type2 = t_type::my_type<V>;

到此:

using my_type2 =  typename t_type::template my_type<V>;