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

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

4
Надежны ли экспериментальные возможности современного C ++ для долгосрочных проектов?
У меня есть проект, который в настоящее время использует C ++ 11/14, но для этого требуется что-то вроде того std::filesystem, что доступно только в C ++ 17, и, следовательно, у меня нет возможности его использовать. Однако я вижу, что в моем текущем компиляторе он доступен как std::experimental::filesystem. Хорошая идея - …


6
Как работает диапазон на основе для простых массивов?
В C ++ 11 вы можете использовать диапазон for, который действует как foreachдругие языки. Он работает даже с простыми массивами C: int numbers[] = { 1, 2, 3, 4, 5 }; for (int& n : numbers) { n *= 2; } Как он узнает, когда остановиться? Работает ли он только …
87 c++  arrays  foreach  c++11 

1
C ++ 11: количество параметров функции шаблона с переменным размером?
Как я могу подсчитать количество аргументов функции вариативного шаблона? то есть: template<typename... T> void f(const T&... t) { int n = number_of_args(t); ... } Как лучше всего реализовать number_of_argsвышеперечисленное?

3
C ++ 11 позволяет внутри класса инициализировать нестатические и неконстантные члены. Что изменилось?
До C ++ 11 мы могли выполнять инициализацию внутри класса только для статических констант целочисленного или перечислимого типа. Страуструп обсуждает это в своем FAQ по C ++ , приводя следующий пример: class Y { const int c3 = 7; // error: not static static int c4 = 7; // error: …

8
С ++ 11 emplace_back в векторе <struct>?
Рассмотрим следующую программу: #include &lt;string&gt; #include &lt;vector&gt; using namespace std; struct T { int a; double b; string c; }; vector&lt;T&gt; V; int main() { V.emplace_back(42, 3.14, "foo"); } Не работает: $ g++ -std=gnu++11 ./test.cpp In file included from /usr/include/c++/4.7/x86_64-linux-gnu/bits/c++allocator.h:34:0, from /usr/include/c++/4.7/bits/allocator.h:48, from /usr/include/c++/4.7/string:43, from ./test.cpp:1: /usr/include/c++/4.7/ext/new_allocator.h: In instantiation of …
87 c++  c++11 

5
std :: array против производительности массива
Если я хочу построить очень простой массив, например int myArray[3] = {1,2,3}; Должен ли я использовать std::arrayвместо этого? std::array&lt;int, 3&gt; a = {{1, 2, 3}}; В чем преимущества использования std :: array перед обычными? Он более производительный? Просто проще обрабатывать копирование / доступ?
87 c++  c++11  stdarray 


4
Почему константная функция-член может изменять статический член-данные?
В следующей C++программе изменение статического члена данных из constфункции работает нормально: class A { public: static int a; // static data member void set() const { a = 10; } }; Но изменение нестатического члена данных из constфункции не работает: class A { public: int a; // non-static data member …

4
Могу ли я использовать C ++ 11 с Xcode?
Я рассматриваю возможность использования некоторых функций C ++ 11 ( autoнапример, таких) в некоторых кроссплатформенных проектах (Windows + Mac). В Windows Visual Studio поддерживает части будущего стандарта C ++ 11, который позволит мне упростить части базы кода, поэтому, естественно, мне было бы интересно начать использовать эти функции. Но насколько мне …
86 c++  xcode  gcc  c++11  clang 

10
Довольно печать std :: tuple
Это продолжение моего предыдущего вопроса о хорошо печатаемых контейнерах STL , для которого нам удалось разработать очень элегантное и полностью общее решение. На этом следующем шаге я хотел бы включить красивую печать std::tuple&lt;Args...&gt;с использованием вариативных шаблонов (так что это строго C ++ 11). Для std::pair&lt;S,T&gt;, я просто говорю std::ostream &amp; …

16
Как закодировать оператор по модулю (%) в C / C ++ / Obj-C, который обрабатывает отрицательные числа
Одна из моих любимых ненавистников к языкам, производным от C (как математик), заключается в том, что (-1) % 8 // comes out as -1, and not 7 fmodf(-1,8) // fails similarly Какое лучшее решение? C ++ допускает возможность использования шаблонов и перегрузки операторов, но и то, и другое для меня …

2
Эффективность push_back () C ++ 11 с std :: move по сравнению с emplace_back () для уже построенных объектов
В C ++ 11, emplace_back()как правило, предпочтительнее (с точки зрения эффективности), push_back()поскольку он допускает создание на месте, но так ли это при использовании push_back(std::move())с уже созданным объектом? Например, что по- emplace_back()прежнему предпочтительнее в следующих случаях? std::string mystring("hello world"); std::vector&lt;std::string&gt; myvector; myvector.emplace_back(mystring); myvector.push_back(std::move(mystring)); // (of course assuming we don't care about …

5
Понимание std :: atomic :: compare_exchange_weak () в C ++ 11
bool compare_exchange_weak (T&amp; expected, T val, ..); compare_exchange_weak()является одним из примитивов сравнения-обмена, представленных в C ++ 11. Он слабый в том смысле, что возвращает false, даже если значение объекта равно expected. Это происходит из-за ложного сбоя на некоторых платформах, где для его реализации используется последовательность инструкций (вместо одной, как на …

6
Как проверить, работает ли все еще std :: thread?
Как я могу проверить, работает ли std::threadеще (независимо от платформы)? У него нет timed_join()метода, и joinable()он не предназначен для этого. Я думал заблокировать мьютекс с помощью a std::lock_guardв потоке и использовать try_lock()метод мьютекса, чтобы определить, заблокирован ли он по-прежнему (поток выполняется), но мне это кажется излишне сложным. Вы знаете более …

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