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

389
Контейнеры Pretty-print C ++ STL

Пожалуйста, обратите внимание на обновления в конце этого поста. Обновление: я создал публичный проект на GitHub для этой библиотеки! Я хотел бы иметь один шаблон, который раз и навсегда позаботится о красивой печати через все контейнеры STL operator<<. В псевдокоде я ищу что-то вроде этого:...

384
Что такое STD :: обещание?

Я достаточно знаком с C ++ 11 -х годов std::thread, std::asyncи std::futureкомпоненты (например , см этот ответ ), которые являются прямо вперед. Тем не менее, я не могу понять, что std::promiseесть, что он делает и в каких ситуациях его лучше всего использовать. Сам стандартный документ не...

369
C ++ шаблон typedef

У меня есть класс template<size_t N, size_t M> class Matrix { // .... }; Я хочу сделать a, typedefкоторый создает Vector(вектор столбца), который эквивалентен a Matrixс размерами N и 1. Что-то вроде этого: typedef Matrix<N,1> Vector<N>; Что приводит к ошибке компиляции. Следующее...

368
Компиляция C ++ 11 с g ++

Я пытаюсь обновить мой компилятор C ++ до C ++ 11. Я немного искал и пришел к выводу, что мне нужно использовать флаг -std=c++0xили -std=gnu++0x, но я мало что знаю о флагах. Может кто-нибудь мне помочь? (Я использую Ubuntu 12.04.) Вот ошибка, которую я получаю от компилятора, когда я пытаюсь...

367
Возвращение unique_ptr из функций

unique_ptr<T>не позволяет создавать копии, вместо этого он поддерживает семантику перемещения. Тем не менее, я могу вернуть функцию unique_ptr<T>из функции и присвоить возвращаемое значение переменной. #include <iostream> #include <memory> using namespace std;...

356
Как активировать C ++ 11 в CMake?

Когда я пытаюсь запустить созданный CMake make-файл для компиляции моей программы, я получаю сообщение об ошибке Диапазон, основанный на циклах, не поддерживается в режиме C ++ 98. Я пытался добавить add_definitions(-std=c++0x)в мой CMakeLists.txt, но это не помогло. Я тоже это попробовал:...

349
std :: unique_lock <std :: mutex> или std :: lock_guard <std :: mutex>?

На этот вопрос есть ответы на Переполнение стека на русском : Чем std :: unique_lock отличается от std :: lock_guard? У меня есть два варианта использования. О. Я хочу синхронизировать доступ двумя потоками к очереди. Б. Я хочу синхронизировать доступ двух потоков к очереди и использовать условную...

337
Когда следует использовать возможность constexpr в C ++ 11?

Мне кажется, что наличие «функции, которая всегда возвращает 5» нарушает или ослабляет значение «вызова функции». Должна быть причина, или необходимость в этой возможности, иначе ее не будет в C ++ 11. Почему это там? // preprocessor. #define MEANING_OF_LIFE 42 // constants: const int MeaningOfLife...

336
Как использовать основанный на диапазоне цикл for () с std :: map?

Типичный пример циклов for (), основанных на диапазоне C ++ 11, всегда выглядит примерно так: std::vector<int> numbers = { 1, 2, 3, 4, 5, 6, 7 }; for ( auto xyz : numbers ) { std::cout << xyz << std::endl; } В каком случае xyzэто int. Но что происходит, когда у нас есть что-то...

334
Для чего нужны встроенные пространства имен?

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

321
C ++ 11 обратный цикл на основе диапазона for

Есть ли контейнерный адаптер, который бы изменял направление итераторов, чтобы я мог перебирать контейнер в обратном направлении с помощью цикла for на основе диапазона? С явными итераторами я бы преобразовал это: for (auto i = c.begin(); i != c.end(); ++i) { ... в это: for (auto i = c.rbegin(); i...

294
Начать тему с функции-члена

Я пытаюсь создать std::threadс помощью функции-члена, которая не принимает аргументов и возвращает void. Я не могу понять, какой синтаксис работает - компилятор жалуется, несмотря ни на что. Как правильно реализовать, spawn()чтобы он возвращал std::threadвыполняемое test()? #include <thread>...

277
Разница в make_shared и обычном shared_ptr в C ++

std::shared_ptr<Object> p1 = std::make_shared<Object>("foo"); std::shared_ptr<Object> p2(new Object("foo")); Здесь есть много постов о Google и StackOverflow, но я не могу понять, почему make_sharedэто более эффективно, чем прямое использование shared_ptr. Может кто-нибудь...

271
Как «int main () {(([] () {}) ());}» является допустимым C ++?

Недавно я наткнулся на следующий эзотерический фрагмент кода. int main(){(([](){})());} Переформатируйте его следующим образом, чтобы сделать его более читабельным: int main(){ (([](){})()); // Um... what?!?! } Но я не могу понять, как (([](){})())действует код. Это не похоже на синтаксис указателя...

270
Должны ли мы передавать shared_ptr по ссылке или по значению?

Когда функция берет shared_ptr(из boost или C ++ 11 STL), вы передаете ее: по постоянной ссылке: void foo(const shared_ptr<T>& p) или по значению void foo(shared_ptr<T> p):? Я бы предпочел первый метод, потому что подозреваю, что он будет быстрее. Но стоит ли это того или есть...

270
Почему в C ++ нет сборщика мусора?

Я не задаю этот вопрос из-за достоинств сборки мусора в первую очередь. Моя главная причина, по которой я спрашиваю об этом, состоит в том, что я знаю, что Бьярн Страуструп сказал, что C ++ будет иметь сборщик мусора в определенный момент времени. С учетом сказанного, почему он не был добавлен? Уже...