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

Используйте этот тег для кода, который должен компилироваться как C ++ 11 (без использования каких-либо функций, представленных в C ++ 14 или более поздних версиях).

8
Когда я должен действительно использовать noexcept?
noexceptКлючевое слово может быть соответствующим образом применено ко многим сигнатуры функций, но я не уверен , о том , когда следует рассмотреть возможность использования его на практике. Основываясь на том, что я прочитал, добавление в последнюю минуту, noexceptкажется, решает некоторые важные проблемы, возникающие при броске конструкторов перемещения. Тем не менее, …

6
Каковы основные цели использования std :: forward и какие проблемы он решает?
При совершенной пересылке std::forwardиспользуется для преобразования именованных ссылок rvalue t1и t2в безымянные ссылки rvalue. Какова цель сделать это? Как это повлияет на вызываемую функцию, innerесли мы оставим t1& t2как значения? template <typename T1, typename T2> void outer(T1&& t1, T2&& t2) { inner(std::forward<T1>(t1), std::forward<T2>(t2)); }

6
C ++ 11 значения и путаница в семантике перемещения (оператор return)
Я пытаюсь понять rvalue ссылки и переместить семантику C ++ 11. В чем разница между этими примерами, и какой из них не будет делать векторные копии? Первый пример std::vector<int> return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return tmp; } std::vector<int> &&rval_ref = return_vector(); Второй пример std::vector<int>&& return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return …

4
Почему инициализация списка (с использованием фигурных скобок) лучше, чем альтернативы?
MyClass a1 {a}; // clearer and less error-prone than the other three MyClass a2 = {a}; MyClass a3 = a; MyClass a4(a); Почему? Я не смог найти ответ на SO, поэтому позвольте мне ответить на мой собственный вопрос.

6
Как передать аргумент unique_ptr конструктору или функции?
Я новичок в перемещении семантики в C ++ 11, и я не очень хорошо знаю, как обрабатывать unique_ptrпараметры в конструкторах или функциях. Рассмотрим этот класс, ссылающийся на себя: #include <memory> class Base { public: typedef unique_ptr<Base> UPtr; Base(){} Base(Base::UPtr n):next(std::move(n)){} virtual ~Base(){} void setNext(Base::UPtr n) { next = std::move(n); } …


10
Контейнеры Pretty-print C ++ STL
Пожалуйста, обратите внимание на обновления в конце этого поста. Обновление: я создал публичный проект на GitHub для этой библиотеки! Я хотел бы иметь один шаблон, который раз и навсегда позаботится о красивой печати через все контейнеры STL operator<<. В псевдокоде я ищу что-то вроде этого: template<container C, class T, String …

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

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

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

5
Возвращение unique_ptr из функций
unique_ptr<T>не позволяет создавать копии, вместо этого он поддерживает семантику перемещения. Тем не менее, я могу вернуть функцию unique_ptr<T>из функции и присвоить возвращаемое значение переменной. #include <iostream> #include <memory> using namespace std; unique_ptr<int> foo() { unique_ptr<int> p( new int(10) ); return p; // 1 //return move( p ); // 2 } …
367 c++  c++11  unique-ptr 

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.