Специализация как истина, так и ложь для bool

0

Почему C++ позволяет специализировать тип для true и false параметров?

template<bool> struct omg { /* can't access anything declared here */ };
template<> struct omg<true> { };
template<> struct omg<false> { };

Есть ли ситуация, когда это имеет смысл/полезно?

  • 1
    Возможно, потому что запрещение этого потребовало бы дополнительной работы и более сложного определения языка.
  • 0
    @KeithThompson: Я тоже так хочу сказать, но я тоже думал об этом вопросе, но ответ был убедительным нет.
Показать ещё 1 комментарий
Теги:
template-specialization

1 ответ

0
Лучший ответ

Я думаю, такой ситуации нет. Но стандарт не имеет ограничений для шаблонных непиговых параметров, которые подходят для условий. Кстати, это было такое ограничение, оно должно быть для всех типов. Неправильно делать что-то вроде

enum A { first, second };

template<A> struct omg {};
template<> struct omg<first> {};
template<> struct omg<second> {};

и это слишком сложно, ИМХО.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню