1

我在处理一段 C++ 代码时遇到了一些麻烦。

首先,如果我这样做,它会很好地工作:

struct A
{
    using my_type1 = double;
    using my_type2 = int;
};

struct B
{
    using size_type = A::my_type2;
};

但是,我希望能够选择 my_type1,所以我采用了模板方式:

template <typename T>
struct A
{
    using my_type1 = T;
    using my_type2 = int;
};

template <typename T>
struct B
{
    using size_type = A<T>::my_type2;
};

在这里,gcc 失败并显示:“expected type specifier”在线

using size_type = A<T>::my_type2;

我也可以将 my_type2 放入模板中,但这是一个不应该有太大变化的类型。

那么为什么我的方法不起作用呢?谢谢!

4

1 回答 1

1

您必须添加typename

using size_type = typename A<T>::my_type2;
于 2013-10-30T15:43:18.343 回答