Вопросы с тегом «c++11»

133
Как использовать настраиваемое средство удаления с членом std :: unique_ptr?

У меня есть класс с членом unique_ptr. class Foo { private: std::unique_ptr<Bar> bar; ... }; Bar - это сторонний класс, который имеет функцию create () и функцию destroy (). Если бы я хотел использовать std::unique_ptrс ним в отдельной функции, я мог бы сделать: void foo() {...

132
В чем разница между -std = c ++ 11 и -std = gnu ++ 11?

Каковы различия между -std=c++11и в -std=gnu++11качестве параметра компиляции для GCC и звона? Тот же вопрос с c99и gnu99? Я знаю о стандартах C ++ и C, меня интересуют различия в параметрах. Я где-то читал, что это связано с некоторыми расширениями, но мне непонятно, какие из них и как выбрать...

131
Пул потоков в C ++ 11

Актуальные вопросы : О C ++ 11: С ++ 11: пул std :: thread? Будет ли async (launch :: async) в C ++ 11 делать пулы потоков устаревшими, чтобы избежать создания дорогостоящих потоков? О Boost: C ++ boost thread повторное использование потоков boost :: thread и создание их пула! Как получить пул...

131
Что означает thread_local в C ++ 11?

Меня смущает описание thread_localв C ++ 11. Насколько я понимаю, каждый поток имеет уникальную копию локальных переменных в функции. К глобальным / статическим переменным могут получить доступ все потоки (возможно, синхронный доступ с использованием блокировок). И thread_localпеременные видны всем...

130
std :: function и std :: bind: что это такое и когда их следует использовать?

Я знаю, что такое функторы и когда их использовать с stdалгоритмами, но я не понял, что Страуструп говорит о них в FAQ по C ++ 11 . Может ли кто-нибудь объяснить, что std::bindи std::functionесть, когда их следует использовать, и привести несколько примеров для...

129
Почему std :: shared_ptr <void> работает

Я нашел код с использованием std :: shared_ptr для произвольной очистки при завершении работы. Сначала я подумал, что этот код не может работать, но потом попробовал следующее: #include <memory> #include <iostream> #include <vector> class test { public: test() { std::cout <<...

128
стрелка (->) в заголовке функции

Я наткнулся на следующий код: template <typename T, typename T1> auto compose(T a, T1 b) -> decltype(a + b) { return a+b; } Я не могу понять одного: Где я мог узнать, что означает стрелка operator ( ->) в заголовке функции? Я предполагаю чисто логически, что ->оператор определяет...

127
Когда в C ++ 11 сделать тип неподвижным?

Я был удивлен, что это не появилось в моих результатах поиска, я подумал, что кто-то спросил бы об этом раньше, учитывая полезность семантики перемещения в C ++ 11: Когда мне нужно (или это хорошая идея) сделать класс неподвижным в C ++ 11? (Причины, отличные от проблем совместимости с существующим...

126
Переместить оператор присваивания и `if (this! = & Rhs)`

В операторе присваивания класса вам обычно нужно проверить, является ли назначаемый объект вызывающим объектом, чтобы не облажаться: Class& Class::operator=(const Class& rhs) { if (this != &rhs) { // do the assignment } return *this; } Вам нужно то же самое для оператора присваивания...

125
Лямбда-захват и параметр с тем же именем - кто затеняет другого? (clang против gcc)

auto foo = "You're using g++!"; auto compiler_detector = [foo](auto foo) { std::puts(foo); }; compiler_detector("You're using clang++!"); clang ++ 3.6.0 и новее распечатайте "Вы используете clang ++!" и предупредить о неиспользовании захвата foo . g ++ 4.9.0 и новее распечатайте «Вы используете g...

124
1.0 - допустимый вывод std :: generate_canonical?

Я всегда думал, что случайные числа лежат между нулем и единицей, без него1 , т.е. это числа из полуоткрытого интервала [0,1). Справки о на cppreference.com из std::generate_canonicalподтверждает это. Однако когда я запускаю следующую программу: #include <iostream> #include <limits>...

124
Захватывают ли лямбда-выражения c ++ 11 переменные, которые они не используют?

Когда я использую, [=]чтобы указать, что я хотел бы, чтобы все локальные переменные были захвачены по значению в лямбде, приведет ли это к тому, что все локальные переменные в копируемой функции или только все локальные переменные , которые используются лямбда ? Так, например, если у меня есть:...

122
ошибка: использование удаленной функции

Я работал над некоторым кодом C ++, который написал мой друг, и при компиляции с gcc4.6 получаю следующую ошибку, которую никогда раньше не видел: error: use of deleted function ‘GameFSM_<std::array<C, 2ul> >::hdealt::hdealt()’ is implicitly deleted because the default definition would...

122
Использование этого указателя вызывает странную деоптимизацию в горячем цикле

Недавно я столкнулся со странной деоптимизацией (точнее, упущенной возможностью оптимизации). Рассмотрим эту функцию для эффективной распаковки массивов 3-битных целых чисел в 8-битные целые числа. На каждой итерации цикла он распаковывает 16 int: void unpack3bit(uint8_t* target, char* source, int...

121
Почему C ++ 11 не поддерживает списки назначенных инициализаторов как C99? [закрыто]

Закрыто . Этот вопрос основан на мнении . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы на него можно было ответить фактами и цитатами, отредактировав этот пост . Закрыт 2 года назад . Уточните этот вопрос Рассматривать: struct Person { int height;...

120
Как работает std :: tie?

Я использовал, std::tieне особо задумываясь об этом. Это работает, поэтому я только что принял это: auto test() { int a, b; std::tie(a, b) = std::make_tuple(2, 3); // a is now 2, b is now 3 return a + b; // 5 } Но как работает эта черная магия ? Как временное, созданное std::tieизменением aи b? Мне...

119
Как включить C ++ 11 в gcc?

Я использую gcc 4.8.1 с http://hpc.sourceforge.net на Mac OSX Mountain Lion. Я пытаюсь скомпилировать программу на C ++, которая использует to_stringфункцию в <string>. Мне нужно использовать флаг -std=c++11каждый раз: g++ -std=c++11 -o testcode1 code1.cpp Есть ли способ включить этот флаг по...