Здравствуйте!
Изобретаю что-то типа BOOST_STRONG_TYPEDEF(NEW_TYPE, base_type) struct NEW_TYPE { typedef base_type value_type; base_type value; ...
Только супер стронг — без неявных преобразований.
И хочу в этом typedef'е завести пачку констант этого нового типа, как static const NEW_TYPE = NEW_TYPE(xxx);
0x03 стандарт такое запрещает, как я помню, статические константы могут быть только встроенных типов.
Компилятор ругается, что NEW_TYPE — incomplete, что, в общем-то, логично.
Можно объявить константы как base_type — но при каждом использовании придется кастить, что не комильфо.
Либо можно сделать конструктор из base_type неявным, но тогда а) ломается super strong концепция, б) эти константы смогут использовать все кому не лень где хочется и как угодно. Что тоже не нравится
Хочется в найти решение в рамках до 11го стандарта включительно
ЗЫ C++ не знаю. Хотя раньше думал, что немного знаю
ЗЫЫ Буст — его точно не знаю
Вполне возможно, что там уже есть такое. Тогда прошу пнуть в нужном направлении
ЗЫЫЫ Тут подумалось — а может константы задавать вне класса? В классе только объявить, а потом, вне класса — определить?
А чтобы только в хидере? inline static const?