RSS jeremykun | Математика ∩ Программирование

Определение имен полей с помощью метапрограммирования в C++

Небольшое замечание: вы можете использовать шаблоны C++11 для определения полей struct по имени и типу и статически ветвиться на них. Впервые я услышал об этом решении от breeze1990. Допустим, я хочу определить, имеет ли структура размер поля типа int. Создадим два одноименных инстанса шаблона, здесь HasStaticSize, который по умолчанию равен false. #include template struct HasStaticSize : std::false_type {}; template struct HasStaticSize< T, typename std::enable_if< std::is_same>::value, void>::type> : std::true_type {}; Последнее решается, только если T::size объявлен как int, или, точнее, как что-то, что "распадается" на int.
favicon
jeremykun.com
Detecting field names with C++ metaprogramming
Create attached notes ...