Compiler-supported type traits в MS VC++
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 13.04.20 03:52
Оценка:
Когда еще в середине 2000-х смотрел Microsoft Extensions в VC++, обратил внимание на compiler-supported type traits, но почему-то посчитал, что они поддерживаются только в CLR — ну и забыл о них. На днях обнаружил, что почти все поддерживаются и в native, и обрадовался было, но сразу же сообразил, что в VC++ нет адекватного способа их использовать. Импотентские __if_exists/__if_not_exists, придуманные чьим-то межушным ганглием, имеют крайне ограниченное применение.

И вот интересно стало: в документации примеры использования этих traits приведены исключительно в run-time. А какой в этом может быть практический смысл? Что дельного можно построить на этих конструкциях, используя результаты проверок только во время выполнения? Или это такой предельно уродливый способ диагностики потенциальных проблем, доступный только в run-time?

А чтобы использовать это во время компиляции, придется опять же городить многоэтажные мета-конструкции, избежать которых, по сути, и призваны эти предикаты.

В общем, с какой практической целью можно было выродить такое, упорно избегая вводить в язык что-то вроде __if для проверки во время компиляции любого константного выражения?
vc++ microsoft compiler type traits __is_pod __is_enum __is_base_of __has_assign
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.