Про размещение объектов в памяти, и технику смешивания типов.
Posted by Илья Лесной on Monday, 1 August 2016к сожалению завершить статью нет времени, coming soon
к сожалению завершить статью нет времени, coming soon
Когда надо вывести имя типа (для отладки например), пользуют, объявленный в <
typeinfo>
оператор typedef, возвращающий специальную структуру с данными о типе (с определенными над ней операциями сравнения), для получения имени удобно обращаться к методу name() безымянного объекта.
Например возьмем какой-нибудь относительно навёрнутый тип:
auto data = std::make_pair(std::string("null"),0);
И выведем его имя — оно будет таким St4pairISsiE.
Это явно не совсем то, что ожидается.
Читать далее...
Это не самостоятельная статья, а инкапсуляция некоторых подробностей данной статьи
Это не самостоятельная статья, а инкапсуляция некоторых подробностей данной статьи
В мире метапрограммирования 11-го стандарта "под капотом" все несколько сложнее, взамен простому объявлению __is_integer добавлен шаблон std::is_integral, А взамен объявления пустых структур, как типов истинности, появляется базовый класс std::integral_constant, содержащий несколько больше данных внутри себя, а соответственно и возможностей применения. Например - оператор преобразования к типу. И уже на базе него строятся типы истинности, хотя в общем идея абсолютно та же.
Читать далее...
Объявляем пустые структуры (далее буду звать их классами)
Метапрограмма - программа порождающая программы. Понятие обширное, и более широкое чем поддержка метапрограммирования языками программирования (которые в той или иной степени поддерживают парадигму метапрограммирования).
Примером метапрограммирования в Си++ являются шаблоны. Ведь шаблоны фактически это описание правил, по которым, в момент компиляции, будут созданы уже настоящие функции.
Читать далее...
В Си++ ссылки, нужно использовать правильно, а не везде где только можно. А соблазниться использовать везде - легко, особенно, при начале изучения языка. Ведь - "не создаются копии переменных, а передаётся сама переменная" - полагая что так быстрее, лучше, эффективнее.
Но не все так просто, при этом всё проще некуда :)
Читать далее...
На одном из собеседований мне задали вопрос про умные указатели. На тот момент, к сожалению, я не знал данный вопрос, хотя (в рамках основной теории умных указателей, так сказать азов) он очень прост. Конечно – если изучать свойства умных указателей – в полной мере это уже большой уровень познаний, но на собеседовании (по крайней мере том где я был) – нужен минимум.
А минимум заключается в следующем:
Отличия умного указателя (smart pointer) от стандартного указателя (raw pointer) в том что:
Пожалуй, это главное свойство, присущее всем разновидностям умных указателей.