Может ли параметр шаблона C ++ быть пустым?

0

Я пытаюсь сделать что-то подобное.

template <typename T>
struct thingo {
  int always;
  T sometimes;
};

thingo <> compile_error; // <- wont compile

thingo <nullptr_t> wastes_space; // compiles but nullptr_t takes space anyway

Является ли наследование от обертки int единственным способом этого?

  • 0
    Я не уверен, как int-обертка поможет этому.
  • 0
    Синтаксис, который вы используете, используется для чего-то другого: cplusplus.com/doc/tutorial/templates , переходите к «специализации шаблонов».
Показать ещё 1 комментарий
Теги:

1 ответ

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

Как насчет:

struct None {};

// Or without an extra struct:
// typedef void None;

template <typename T = None>
struct thingo {
  int always;
  T sometimes;
};

template <>
struct thingo<None> {
  int always;
};
  • 1
    или ... может быть, void ?
  • 0
    Конечно, пустота тоже хороша
Показать ещё 1 комментарий

Ещё вопросы

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