Вопросы по теме 'c++03'

Есть ли причина использовать ключевое слово auto в С++ 03?
Обратите внимание , что этот вопрос был первоначально опубликован в 2009 году, до того, как был ратифицирован C++11 и до того, как значение ключевого слова auto было радикально изменено. Предоставленные ответы относятся только к значению...
70328 просмотров
schedule 16.04.2022

Поточно-ориентированные статические переменные без мьютекса?
Я помню, как читал, что статические переменные, объявленные внутри методов, не являются потокобезопасными. (См. А как насчет сингла Мейера? , упомянутого Тодд Гарднер ) Dog* MyClass::BadMethod() { static Dog dog("Lassie"); return &dog;...
22737 просмотров

Могут ли виртуальные функции иметь параметры по умолчанию?
Если я объявляю базовый класс (или класс интерфейса) и указываю значение по умолчанию для одного или нескольких его параметров, должны ли производные классы указывать те же значения по умолчанию, а если нет, какие значения по умолчанию будут...
72564 просмотров
schedule 30.08.2023

Использование boost для создания лямбда-функции, которая всегда возвращает true
Предположим, у меня есть функция, которая принимает некоторую форму предиката: void Foo( boost::function<bool(int,int,int)> predicate ); Если я хочу вызвать его с помощью предиката, который всегда возвращает истину, я могу определить...
2982 просмотров
schedule 01.04.2022

Какие различия, если таковые имеются, между C++03 и C++11 можно обнаружить во время выполнения?
Можно написать функцию, которая при компиляции компилятором C вернет 0, а при компиляции компилятором C++ вернет 1 (тривиальное решение с #ifdef __cplusplus не интересно). Например: int isCPP() { return sizeof(char) == sizeof 'c'; }...
8172 просмотров
schedule 11.06.2023

Как разыменовать тип в С++ 03?
Как получить «разыменованный тип» другого типа в С++ 03? Обратите внимание, что это может быть другой разыменовываемый тип, например std::vector<int>::iterator . например если у меня есть template<typename T> struct MyPointer {...
1838 просмотров

Функция перемещения в эмуляции unique_ptr C++03
Я пытаюсь понять, как реализована эмуляция unique_ptr в C++03 . unique_ptr очень похож на std::auto_ptr, но безопаснее. Он выдает ошибки компилятора в тех случаях, когда auto_ptr передал бы право собственности неявно (т. е. молча). Например,...
1273 просмотров
schedule 15.07.2023

Почему старое использование (С++ 03) auto не компилируется под С++ 11?
Я знаю, что auto раньше мало использовался, потому что он используется по умолчанию для переменных (в отличие от статических) - см. вопрос Рассмотрим, однако, допустимый код C++03, где, возможно, для ясности, использовалось это ключевое слово:...
1159 просмотров
schedule 03.12.2022

C++ и опасности блокировки с двойной проверкой: обходной путь?
Я читал статью Скотта Мейерса «Опасности блокировки двойной проверки». http://www.aristeia.com/Papers/DDJ_Jul_Aug_2004_revised.pdf Автор приводит причины, по которым блокировка с двойной проверкой не работает (стр. 3, раздел 4). Я думал о том,...
354 просмотров
schedule 04.10.2022

Убедитесь, что конструктор производного класса должен вызывать определенный метод базового класса
В классе C++(03) у меня есть переменная-член, которой должно присваиваться значение во время создания объекта. Однако только производный класс может вычислить требуемое значение. Как обсуждалось в этом сообщении C++ требует, чтобы вы...
1964 просмотров
schedule 01.08.2022

Определение того, является ли что-то (увеличение) диапазоном с помощью SFINAE
Для кода регистрации я хотел бы определить, можно ли повторить данный аргумент функции шаблона с помощью инструментов из Boost.Range или нет. Очевидно, мне нужно создать экземпляр другого кода независимо от того, есть он или нет, поэтому мне нужен...
897 просмотров
schedule 16.09.2022

Насколько компиляторы GCC придерживаются стандартов C/C++?
Например, язык программирования C со стандартом C99 поддерживает шестнадцатеричные литералы с плавающей запятой, а C++ со стандартом C++03 — нет. Я проверил это, GCC распознал шестнадцатеричный литерал с плавающей запятой в режиме C++03...
119 просмотров
schedule 16.03.2022

Как иметь константные члены в значениях контейнера stl в С++?
Мне нравится делать мои переменные-члены C++ постоянными, если они не должны изменяться после создания объекта, однако иногда их необходимо изменить с помощью STL. Например, если у меня есть вектор моего класса с константными членами, и я пытаюсь...
1388 просмотров

Точка последовательности && оператор
Для C++03 стандарт говорит, что между левым и правым операндом оператора && есть точка последовательности, так что все побочные эффекты левого оператора имеют место до того, как будет осуществлен доступ к правому оператору. So int i = 0; if...
337 просмотров

Как мне инициализировать эту переменную статического класса в моем классе шаблона?
У меня есть следующий код ( на ideone.com ): template<class T> class CMemoryPool { public: CMemoryPool(int param1) : stuff(param1) {} private: T stuff; }; template<class T> class CList { public: struct Entry...
97 просмотров
schedule 25.09.2022

Специализированный шаблон для концепции без поддержки базового шаблона
У меня есть несколько классов, реализующих концепцию A, и я могу определить с помощью некоторой метафункции, что класс действительно реализует концепцию A. Скажем так. template <typename T> struct IsA; IsA<ImplementsA>::value ==...
78 просмотров
schedule 19.08.2022

Вывод типа возвращаемого значения функции в C++03
Теги задают вопрос, но, тем не менее, учтите следующее: template<typename F, typename A, typename R> R call(F function, A arg) { return function(arg); } int foo(char) { return 5; } int main() { call(foo, 'a'); } Компилятор...
360 просмотров

Какой самый простой способ эмулировать =delete в С++ 03 для ограничения операций копирования/присваивания?
С++ 11 устраняет зуд, который меня давно беспокоил, позволяя вам помечать неявно определенные компилятором методы как verboten с помощью синтаксиса «= delete». Википедия для получения дополнительной информации. class Foo { public: Foo();...
391 просмотров
schedule 05.07.2022

Проверить интегральный тип
Как я могу проверить, является ли тип параметра шаблона целочисленным? Я знаю, что могу использовать std::is_integral<> в C++11 для этого. Тут даже вопрос есть. Как проверить, что тип параметра шаблона является целым? Я также знаю,...
828 просмотров
schedule 26.08.2023

Как сломать циклическую ссылку shared_ptr, используя weak_ptr
Я читал, что weak_pointers можно использовать для прерывания циклических ссылок. Рассмотрим следующий пример циклической ссылки struct A { boost::shared_ptr<A> shrd_ptr; }; boost::shared_ptr<A>...
11972 просмотров
schedule 08.07.2023