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

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

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

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



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

8
Разница в 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. Может кто-нибудь объяснить мне пошаговую последовательность созданных объектов и операций, выполняемых обоими, чтобы я смог понять, насколько make_sharedэто эффективно. Я привел один …
277 c++  c++11  shared-ptr 

1
Как «int main () {(([] () {}) ());}» является допустимым C ++?
Недавно я наткнулся на следующий эзотерический фрагмент кода. int main(){(([](){})());} Переформатируйте его следующим образом, чтобы сделать его более читабельным: int main(){ (([](){})()); // Um... what?!?! } Но я не могу понять, как (([](){})())действует код. Это не похоже на синтаксис указателя функции. Это не может быть какой-то уловкой перегрузки оператора. Код …
271 c++  c++11  lambda  syntax 

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

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

13
Когда полезен std :: weak_ptr?
Я начал изучать умные указатели C ++ 11, и я не вижу никакого полезного использования std::weak_ptr. Может кто-нибудь сказать мне, когда std::weak_ptrэто полезно / необходимо?

10
Почему лямбда-код C ++ 11 по умолчанию требует ключевое слово mutable для захвата по значению?
Краткий пример: #include <iostream> int main() { int n; [&](){n = 10;}(); // OK [=]() mutable {n = 20;}(); // OK // [=](){n = 10;}(); // Error: a by-value capture cannot be modified in a non-mutable lambda std::cout << n << "\n"; // "10" } Вопрос: зачем нам mutableключевое слово? …
256 c++  lambda  c++11 

8
«Распаковка» кортежа для вызова соответствующего указателя на функцию
Я пытаюсь сохранить в std::tupleразличном количестве значений, которые позже будут использоваться в качестве аргументов для вызова указателя функции, который соответствует сохраненным типам. Я создал упрощенный пример, показывающий проблему, которую я пытаюсь решить: #include <iostream> #include <tuple> void f(int a, double b, void* c) { std::cout << a << ":" << …

8
Как заставить мой пользовательский тип работать с «петлями на основе диапазона»?
Как и многие люди в наши дни, я пробовал разные функции, которые дает C ++ 11. Один из моих любимых - «петли на основе диапазона». Я это понимаю: for(Type& v : a) { ... } Эквивалентно: for(auto iv = begin(a); iv != end(a); ++iv) { Type& v = *iv; ... …

8
Нужно ли std :: unique_ptr <T> знать полное определение T?
У меня есть код в заголовке, который выглядит следующим образом: #include &lt;memory&gt; class Thing; class MyClass { std::unique_ptr&lt; Thing &gt; my_thing; }; Если я включаю этот заголовок в cpp, который не включает Thingопределение типа, то он не компилируется под VS2010-SP1: 1&gt; C: \ Program Files (x86) \ Microsoft Visual Studio …

12
to_string не является членом std, говорит g ++ (mingw)
Я делаю небольшую программу для запоминания словарного запаса, в которой слова будут мелькать на меня случайно для значений. Я хочу использовать стандартную библиотеку C ++, как говорит нам Бьярно Страуструп, но я столкнулся с на первый взгляд странной проблемой прямо за воротами. Я хочу изменить longцелое число, std::stringчтобы иметь возможность …
245 c++  c++11  g++  mingw  tostring 

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