SUPER_STRONG_TYPEDEF
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 02.09.18 03:05
Оценка:
Здравствуйте!

Изобретаю что-то типа 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?
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.