Я пытаюсь написать некоторые вещи, чтобы обернуть внутренности simd, и я решил, что было бы неплохо сделать что-то вроде
using vec<float, 4> = __m128;
, чтобы я мог использовать шаблоны в некотором коде, который я напишу позже,На самом деле это не относится к вопросу, но __m128 - это тип, представляющий 4 числа с плавающей запятой.Это не работает, и g ++ говорит expected nested-name-specifier before 'vec'
.Я знаю, что могу просто написать классы, чтобы обернуть их, или я могу сделать что-то вроде:
template <typename T, int N> struct vec;
template<> struct vec<float, 4>
{
typedef __m128 type;
};
, и тогда я смогу использовать vec<float,4>::type
, но первый способ гораздо удобнее.Я думаю, что это возможно, используя что-то вроде шаблон C ++ typedef , но я не уверен и не знаю синтаксиса.Есть ли способ заставить первое утверждение работать или сделать что-то подобное?