170 похожих чатов

Кстати, а есть ли разница между определением шаблонной переменной или

функции-структуры?

просто читаю как делает микрософт для того же type_trait, а он пишет типо
template<class T> INLINE_VAR constexpr bool is_const = false;
template<class T> INLINE_VAR constexpr bool is_const<const T> = true;
А вот гцц реализует тоже самое через структуры вида
template<class T> struct is_const : bool_constant<false> {};
template<class T> struct is_const<const T> : bool_constant<true> {};

Вопрос в чём - какой смысл использовать структуры в таком кейсе, как у гцц? Это всё из-за совместимости со старыми стандартами и невозможности использовать шаблонные переменные?

3 ответов

13 просмотров

Структура гибче. И в некотором смысле более в духе компилятора с++, как машины над типами. true_type сравнить можно двумя способами - это и ==true и is_same<true_type, ..>. Также на базе структур можно делать конструкции вида has_some_traits<°°>, а с переменными такое не катит. И у мс-стд наследования от integral_constant тоже очень много. Не только переменные. Думаю используют то то, то другое исходя из целесообразности.

Т- Автор вопроса
Int Unsigned
Структура гибче. И в некотором смысле более в духе...

Для совместимости с библиотекой у них ясен фиг будут все эти integral_constant. Но внутри всё сильно по другому

Мсвц таким образом хочет уменьшить количество инстанцирований, чтобы при запросе константы не инстанцировался тип. Но подход это вообще говоря неверный, тк если посмотреть со стороны всему программы, то теперь кто то попросит тип и внутри константу, а кто то только константу и в сумме инстанцирований станет больше

Похожие вопросы

Обсуждают сегодня

какие клиентские датасеты в лазаре умеют объединяться в master-detail? нужно забрать на клиент запись из одной таблицы и выборку из другой связанной один-ко-многим, отредактир...
Igor
19
А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Подскажите, сейчас что то есть (JS модуль какой-нибудь), что можно использовать для: 1) переваривания javascript codа из html fileа, т.е. разбивки, на переменные, команды, бло...
Iar De
32
Мне интересно, скорее людей здесь используют D, Rust, C/C++ для решения реальных прикладных задач за деньги?)
Evil Satanson
43
кто поможет крякнуть чит? (реверс инжиринг) чтобы разблокировать премиум версию
Mёdkinson Medvezhkin
39
/////////////////////////////////////// TChart / TLineSeries - сохранение данных (текстовый файл) /////////////////////////////////////// добрый день / работа с графиком: 1....
livontiy
14
Делал сайт заказчику в 2018г. Прилетела претензия на фотку в примерах работ от copydefend (ооо "фортуна технолоджис") на 36к рублей 🙈 Конторка эта образовалась в 2023 г, и 13...
Alexander Andreev
10
давайте за механические клавиатуры потрём, мне тут неучтенных денег упало и их можно потратить на что-то такое, вот думаю про dark project kd87a, кто-то имеет что-то подобное?
Oleg Nosov
24
А что, надо по другому как-то?
rσσт@ανα∂αмιασ
10
Возник вопросик, а сисколл sys_read в лине должен возвращать 0 в eax когда я пытаюсь прочитать байт за пределами файла? А то я как-то не уверен, у меня сискол все время возвра...
rσσт@ανα∂αмιασ
8
Карта сайта