Сообщения

Сообщения за ноябрь, 2017

Возвращаемый тип шаблонных функций [1]

Шаблонные функции имеют два различных набора параметров: 1)       Шаблонные параметры( Template parameters ), которые объявляются в угловых скобках перед именем шаблонной функции: template<typename T> // T шаблонный параметр. 2)       Параметры вызова (Call parameters), которые объявляются в круглых скобках после имени шаблонной функции: T max ( T a , T b ); // a и b – параметры вызова. Вы можете иметь любое количество шаблонных параметров. Например, вы можете определить шаблон max() для вызова двух потенциально различных типов: template<typename T1, typename T2> T1 max (T1 a, T2 b) { return b < a ? a : b;  } auto m = :: max (4, 7.2); // OK , но тип первого аргумента определяет возвращаемый тип Может быть желательным иметь возможность передавать различные типы в шаблонную функцию max(), но как показывает это пример – здесь возникает проблема. Если вы используете о...

Ещё раз о синглтоне

Настоящая статья написана под влиянием главы “Реализация шаблона синглтон” из широко известной книги А. Александреску[1] без особых претензий на оригинальность, хотя прилагаемый код может быть использован. Шаблон синглтон реализован в библиотеке Loki[2] (хотя и не вполне так, как описано в книге Александреску). Преимуществом предлагаемой реализации является её компактность и моё стремление использовать те новации стандартов языка С++, которые были приняты в последние годы, то есть после написания книги и библиотеки Loki. Далее обсуждаются следующие вопросы: 1)       Что такое паттерн синглтон и какие требования он предъявляет к реализациям. 2)       Идиомы С++ для поддержки этого паттерна. 3)       Обеспечение уникальности синглтона, его корректное уничтожение и,  при необходимости, восстановление уничтоженного синглтона. 4)       Работа с синглтоном в многопоточной с...