i = 777; }
при каждом инстанцировании порождает новую статическую переменную i. А возможно ли сделать так, чтобы она была у всех инстансов одна?
Единственное решение, которой приходит на ум (ну, кроме глобальной переменной), это:
struct static_holder { static const int i = 777; }
template <typename T>
struct type : static_holder {}
Можно от std::integral_contant наследоваться
А можно пример?
template <typename T> struct type : std::integral_constant<int, 777> {};
А как потом достать семерки из объекта type<T>?
Ну либо придется еще юзинг дописать
Не, мне надо чтобы имя значимым, а не просто value. Чтобы было понятнее, я делаю аналог npos в std::string.
У меня в реальном коде там статически лежит не int, а более "тяжелый" тип. Ну и в принципе, это константа. Она одна на всех и не зависит от шаблонных параметров. Поэтому возникает вопрос: "а зачем мне это на каждое инстанцирование"?
В смысле какая? Вот такая: static const int i = 777;
Тяжёлый тип - какой?
она точно в классе должна лежать?
Это std::array<char, X>. С размерностью X пока не определился. Но будет в пределах от 10 до 100.
Надо иметь возможность делать так: auto i = type<int>::i;
так если i везде одинаковая то зачем указывать тип?
У type будут наследники (и не шаблонные тоже). К i обращение будет через них.
Обсуждают сегодня