Вопрос специализации шаблона Alias?

Рассмотрим этот код:

#include <iostream>
#include <ratio>

template <class R1, class R2, class... RN>
using ratio_sum = ratio_sum<ratio_sum<R1, R2>, RN...>;

template <class R1, class R2>
using ratio_sum<R1, R2> = std::ratio_add<R1, R2>;

int main()
{
std::cout<<ratio_sum<std::ratio<3>, std::ratio<2>>::num<<std::endl;
}

Вылетает со следующей ошибкой:

main.cpp:5:23: error: expected type-specifier before 'ratio_sum'
using ratio_sum = ratio_sum<ratio_sum<R1, R2>, RN...>;

Как решить эту проблему ? (Поскольку это иллюстрирует общую проблему, я не хочу обходной путь, который использует std::ratio_add в вариационной версии).

0

Решение

У вас есть две ошибки в вашем коде. Первое, что вы получаете, это то, что ratio_sum<R1, R2> не определяется, когда вы пытаетесь его использовать. Решение этого простое: поменяйте местами два определения.

Вторая проблема заключается в том, что вы не можете использовать шаблоны при определении псевдонима типа в случае ration_sum<R1, R2>,

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]