Как создать шаблонный алиас?

386
13 мая 2017, 21:09

Хочу сделать проверку типа итератора каким-то таким способом:

template <typename It, typename T>
using is = std::is_same<std::iterator_traits<It>::iterator_category, T>::value;

И потом использовать это дело в ассертах (RanIt - шаблонный тип):

static_assert(is<RanIt, std::random_access_iterator_tag>, "random access required");

Что делаю не так?

Answer 1

Либо замените using на constexpr bool, либо уберите из определения ::value и перенесите его в место проверки.

using - не константа, а алиас. Может быть синонимом типа, внутри которого определена константа value, но сам не может быть константой.

READ ALSO
Последовательность от a до zzz

Последовательность от a до zzz

Как перебрать последовательность букв в цикле? каждую последовательность нужно иметь возможность получить, зная номер позиции

321
Непонятная битовая операция

Непонятная битовая операция

Что может означать операция i = i & (i+1) в реализации дерева отрезков?

291
C++ теорема синусов [требует правки]

C++ теорема синусов [требует правки]

Здравствуйте! У меня есть задание написать дочерний класс Треугольник от класса УголКласс Угол уже готов, но у меня есть задание: имея класс...

246
Отсутствует компонент TDBGrid в Embarcadero C++ Builder 10.2

Отсутствует компонент TDBGrid в Embarcadero C++ Builder 10.2

Не удаётся найти компонент TDBGrid в Embarcadero C++ Builder 102

416