Выражение сгиба: переберите параметр типа шаблона variadic, чтобы проверить условия времени компиляции для включающих типов - PullRequest
0 голосов
/ 12 ноября 2018

Идея, которую я имею в виду, проста: в шаблоне классов с переменным числом я хочу проверить некоторые типы времени компиляции для типов. В этом случае я хочу узнать, есть ли определенный тип в пакете или нет. Вот как мог бы выглядеть код с выражениями сгиба C ++ 17, но, очевидно, это неверный синтаксис. Как это реализовать?

#include <type_traits>

template <class... Types>
struct TypesPack
{
    template <typename T>
    static constexpr bool hasType() {
        return std::is_same<T, Types>::value || ... || false;
    }
};

1 Ответ

0 голосов
/ 12 ноября 2018
static constexpr bool hasType() {
    return (std::is_same<T, Types>::value || ...);
}

Складное выражение должно быть заключено в скобки, и вы можете опустить false при использовании || в качестве оператора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...