C++ C++;使用模板为基本类型创建别名?

C++ C++;使用模板为基本类型创建别名?,c++,c++11,templates,typedef,C++,C++11,Templates,Typedef,我正试图写一些东西来包装simd intrinsics,我想这样做会很好 using vec<float, 4> = __m128; 然后我可以使用vec::type,但是第一种方法要方便得多。我想可能会使用类似的东西,但我不确定,而且我不知道语法。有没有办法让第一句话起作用或做类似的事情?没有,第一句话不起作用。考虑到当前的规则,这是没有意义的(你不能劫持这样一个模板的语法) 然而,您的第二个解决方案是完美的!您只需稍微调整一下: namespace impl { tem

我正试图写一些东西来包装simd intrinsics,我想这样做会很好

using vec<float, 4> = __m128;

然后我可以使用
vec::type
,但是第一种方法要方便得多。我想可能会使用类似的东西,但我不确定,而且我不知道语法。有没有办法让第一句话起作用或做类似的事情?

没有,第一句话不起作用。考虑到当前的规则,这是没有意义的(你不能劫持这样一个模板的语法)

然而,您的第二个解决方案是完美的!您只需稍微调整一下:

namespace impl {
    template <typename T, int N> struct vec;

    template<> struct vec<float, 4>
    {
        typedef __m128 type;
    };
}

template<typename T, int N>
using vec = typename impl::vec<T, N>::type;
namespace impl{
模板结构向量;
模板结构向量
{
typedef_uum128型;
};
}
样板
使用vec=typename impl::vec::type;
现在,
vec
是一个实际的模板,它引用了相应结构的
类型。

您可能有兴趣查看关于使用双下划线的答案。
namespace impl {
    template <typename T, int N> struct vec;

    template<> struct vec<float, 4>
    {
        typedef __m128 type;
    };
}

template<typename T, int N>
using vec = typename impl::vec<T, N>::type;