Извините за помпезное название, я хотел бы создать constexpr
функции, которая принимает переменное число логических аргументов шаблона и возвращает «индекс шаблона» первого true
значения в C++ 11 (C++ 14 только решения приветствуются, но не принимаются в качестве ответа).VARIADIC constexpr
Например, вызов этой функции Selector
Selector< false, false >() == 0 // none of the template argument is true
Selector< true, false, true >() == 1 // first true template argument is the first one
Selector< false, false, true, false >() == 3 // .. and here it's the third one
Типичное использование этого, и причина, почему я называю это «тип-селектор», будет
Selector< std::is_pointer<T>::value, std::is_arithmetic<T>::value >()
и причина почему я хотел бы, чтобы он был constexpr
для использования в частичной специализированной специализации.
Я не совсем уверен, как это сделать, хотя я думаю, что с использованием вариативных шаблонов, специализированной специализации constexpr (для случая 0) и рекурсии (возможно ли «потреблять» аргументы шаблона, например shift
в bash?), это должно быть выполнимо.
Downvote пожалуйста объяснить ... – Sheljohn
Это хороший вопрос. Но ему не хватает усилий ... –
@KarolyHorvath Согласен, я сейчас пытаюсь что-то придумать. – Sheljohn