Узнайте, есть ли у общеизвестного перевода участник с определенным именем [дублировать]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Узнайте, есть ли у общеизвестного перевода участник с определенным именем [дублировать]

Сообщение Anonymous »

У меня есть несколько перечисленных переводов: < /p>

Код: Выделить всё

enum class E1 { a, b, c };
enum class E2 { p, Q, r, s, t };
enum class E3 { x, y, Q, z };
// ...
Я хотел бы иметь механизм, подобный типам, чтобы определить, имеет ли один из них участник с именем Q , и, если да, я бы хотел получить это значение. />

Код: Выделить всё

template  bool constexpr has_Q() { return false; }
template  bool constexpr has_Q { return true; }
template  bool constexpr has_Q { return true; }
и аналогичный get_q , который возвращает член Q для тех, у кого есть, но не подходит для перечисления, которые не делают.

Код: Выделить всё

template  T constexpr get_Q();  // not implemented
template  E2 constexpr get_Q() { return E2::Q; }
template  E3 constexpr get_Q() { return E3::Q; }
< /code>
Это позволяет шаблонам библиотечной функции делать такие вещи, как: < /p>
if constexpr(has_Q()) {
auto constexpr Q = get_Q();
// do something involving Q here
}
Это решает мою проблему, но это лучшее, что я могу сделать?>

Подробнее здесь: https://stackoverflow.com/questions/795 ... cular-name
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»