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

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

7
Теперь, когда у нас есть std :: array, что еще остается для массивов в стиле C?
std::arrayзначительно превосходит массивы C. И даже если я хочу взаимодействовать с устаревшим кодом, я могу просто использовать std::array::data(). Есть ли причина, по которой мне когда-либо понадобится массив старой школы?

3
Прекращение поддержки ключевого слова static… не более?
В C ++ можно использовать staticключевое слово в единице перевода, чтобы повлиять на видимость символа (объявление переменной или функции). В n3092 это устарело: Приложение D.2 [depr.static] Использование ключевого слова static не рекомендуется при объявлении объектов в области пространства имен (см. 3.3.6). В n3225 это было удалено. Единственная статья , я …
89 c++  static  c++11  standards 

3
Что такое const void?
В описании std::is_voidговорится, что: Предоставляет значение константы члена, равное true, если T является типом void, const void, volatile void или const volatile void. Тогда что могло быть const void, или volatile void? В этом ответе указано, что const voidтип возвращаемого значения будет недопустимым (однако компилируется на VC ++ 2015). const …
89 c++  c++11  c++14 

4
Как хранить аргументы вариативного шаблона?
Можно ли как-нибудь сохранить пакет параметров для последующего использования? template <typename... T> class Action { private: std::function<void(T...)> f; T... args; // <--- something like this public: Action(std::function<void(T...)> f, T... args) : f(f), args(args) {} void act(){ f(args); // <--- such that this will be possible } } Потом позже: void …

4
Почему нет присваивания / конструктора перемещения по умолчанию?
Я простой программист. Переменные-члены моего класса чаще всего состоят из POD-типов и STL-контейнеров. Из-за этого мне редко приходится писать операторы присваивания или конструкторы копирования, поскольку они реализованы по умолчанию. Добавьте к этому, если я использую std::moveдля объектов, которые нельзя перемещать, он использует оператор присваивания, что означает std::moveсовершенно безопасно. Поскольку я …

3
Является ли это известной ловушкой C ++ 11 для циклов?
Представим, что у нас есть структура для хранения 3 двойников с некоторыми функциями-членами: struct Vector { double x, y, z; // ... Vector &negate() { x = -x; y = -y; z = -z; return *this; } Vector &normalize() { double s = 1./sqrt(x*x+y*y+z*z); x *= s; y *= s; …

6
Функция, возвращающая лямбда-выражение
Интересно, можно ли написать функцию, возвращающую лямбда-функцию на C ++ 11. Конечно, одна проблема - как объявить такую ​​функцию. У каждой лямбды есть тип, но этот тип нельзя выразить в C ++. Я не думаю, что это сработает: auto retFun() -> decltype ([](int x) -> int) { return [](int x) …
88 c++  function  c++11  lambda 

6
Почему я не могу создать вектор лямбда-выражений (одного типа) в C ++ 11?
Я пытался создать вектор лямбда, но не смог: auto ignore = [&]() { return 10; }; //1 std::vector<decltype(ignore)> v; //2 v.push_back([&]() { return 100; }); //3 До строки №2 компилируется нормально . Но строка №3 дает ошибку компиляции : ошибка: нет соответствующей функции для вызова 'std :: vector <main () …
88 c++  vector  lambda  c++11 

3
По умолчанию, значение и нулевой беспорядок инициализации
Я очень запутался в инициализации значений, значений по умолчанию и нуля. и особенно когда они вступают в силу различных стандартов C ++ 03 и C ++ 11 (и C ++ 14 ). Я цитирую и пытаюсь расширить действительно хороший ответ Value- / Default- / Zero- Init C ++ 98 и …
88 c++  c++11  c++14  c++03  c++98 

5
Есть ли неатомарный эквивалент std :: shared_ptr? А почему его нет в <памяти>?
Это вопрос из двух частей, касающихся атомарности std::shared_ptr: 1. Насколько я могу судить, std::shared_ptrэто единственный умный указатель в &lt;memory&gt;этом атомарном. Мне интересно, есть ли std::shared_ptrдоступная неатомарная версия (я ничего не вижу &lt;memory&gt;, поэтому я также открыт для предложений, выходящих за рамки стандарта, например, в Boost). Я знаю, что boost::shared_ptrэто тоже …

5
Передача общих указателей в качестве аргументов
Если я объявляю объект, заключенный в общий указатель: std::shared_ptr&lt;myClass&gt; myClassObject(new myClass()); затем я хотел передать его как аргумент методу: DoSomething(myClassObject); //the called method void DoSomething(std::shared_ptr&lt;myClass&gt; arg1) { arg1-&gt;someField = 4; } Это просто увеличивает счетчик ссылок shared_pt, и все в порядке? Или он оставляет висящий указатель? Вы все еще должны …


11
Как получить целочисленный идентификатор потока в c ++ 11
c ++ 11 имеет возможность получить текущий идентификатор потока, но он не может быть приведен к целочисленному типу: cout&lt;&lt;std::this_thread::get_id()&lt;&lt;endl; вывод: 139918771783456 cout&lt;&lt;(uint64_t)std::this_thread::get_id()&lt;&lt;endl; ошибка: недопустимое приведение из типа 'std :: thread :: id' к типу 'uint64_t', то же самое для других типов: недопустимое приведение из типа 'std :: thread :: id' …

5
Каковы правильные параметры ссылки для использования std :: thread в GCC под Linux?
Привет, я пытаюсь использовать std::threadс G ++. Вот мой тестовый код #include &lt;thread&gt; #include &lt;iostream&gt; int main(int, char **){ std::thread tt([](){ std::cout&lt;&lt;"Thread!"&lt;&lt;std::endl; }); tt.join(); } Он компилируется, но когда я пытаюсь его запустить, результат: terminate called after throwing an instance of 'std::system_error' what(): Operation not permitted Aborted Моя версия компилятора: …


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