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 ответов

24 просмотра

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

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

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

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

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

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

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта