Метапрограммирование C++11 — поиск значения перечисления во время компиляции (значения содержат пробелы)

Есть ли способ во время компиляциипроверить, что данный значение находится в пределах значений данного перечисления, таким образом, действительно?

enum myenum { val1 = 10, val2 = 30, val3 = 45 }

template <myenum t>
class myClass
{ ... }

myClass<10> a; // fails, OK
myClass<val1> b; // compiles OK
myClass<myenum(24)> c; //compiles, NOT OK!

Здесь было бы полезно использовать второй логический параметр нетипового шаблона, а значение этого логического значения было бы задано метафункцией, которая, учитывая значение, проверяла бы, что значение находится в пределах значений myenum.

Я просмотрел различные вопросы, связанные с перечислением, например, как повторить перечисление, и кажется, что это невозможно сделать.

6
задан Nicol Bolas 22 June 2012 в 19:42
поделиться