Запитання з тегом «c++11»

Використовуйте цей тег для коду, який повинен скласти як C ++ 11 (не використовуючи жодних функцій, введених у C ++ 14 або новіших версіях).

3
Явний тип повернення лямбди
Коли я намагаюся скомпілювати цей код (VS2010), я отримую таку помилку: error C3499: a lambda that has been specified to have a void return type cannot return a value void DataFile::removeComments() { string::const_iterator start, end; boost::regex expression("^\\s?#"); boost::match_results<std::string::const_iterator> what; boost::match_flag_type flags = boost::match_default; // Look for lines that either start …

3
Як застосувати семантику переміщення, коли вектор росте?
У мене є std::vectorоб'єкти певного класу A. Клас нетривіальний і має конструктори копіювання та конструктори переміщення. std::vector<A> myvec; Якщо я заповню вектор A об'єктами (використовуючи, наприклад myvec.push_back(a)), вектор збільшиться в розмірі, використовуючи конструктор копіюванняA( const A&) для створення нових копій елементів у векторі. Чи можу я якось Aдомогтися того, що …

4
Передача shared_ptr <Derived> як shared_ptr <Base>
Який найкращий метод використовувати передачу shared_ptrпохідного типу функції, яка приймає shared_ptra базового типу? Я зазвичай передаю shared_ptrs за посиланням, щоб уникнути непотрібної копії: int foo(const shared_ptr&lt;bar&gt;&amp; ptr); але це не працює, якщо я намагаюся зробити щось подібне int foo(const shared_ptr&lt;Base&gt;&amp; ptr); ... shared_ptr&lt;Derived&gt; bar = make_shared&lt;Derived&gt;(); foo(bar); Я міг би …


2
Ламбда-реалізація C ++ 11 та модель пам'яті
Я хотів би отримати деяку інформацію про те, як правильно думати про закриття C ++ 11, а також std::functionпро те, як вони реалізовані та як обробляється пам’ять. Незважаючи на те, що я не вірю в передчасну оптимізацію, я маю звичку ретельно розглядати вплив мого вибору на продуктивність під час написання …
92 c++  memory  lambda  c++11 

3
Коли приватний конструктор не є приватним конструктором?
Скажімо, у мене є тип, і я хочу зробити його конструктор за замовчуванням приватним. Я пишу наступне: class C { C() = default; }; int main() { C c; // error: C::C() is private within this context (g++) // error: calling a private constructor of class 'C' (clang++) // error …

6
помилка :: make_unique не є членом 'std'
Я намагаюся скомпілювати наступну програму пулу потоків, опубліковану в огляді коду, щоб перевірити її. /codereview/55100/platform-independant-thread-pool-v4 Але я отримую помилки threadpool.hpp: In member function ‘std::future&lt;decltype (task((forward&lt;Args&gt;)(args)...))&gt; threadpool::enqueue_task(Func&amp;&amp;, Args&amp;&amp; ...)’: threadpool.hpp:94:28: error: ‘make_unique’ was not declared in this scope auto package_ptr = make_unique&lt;task_package_impl&lt;R, decltype(bound_task)&gt;&gt; (std::move(bound_task), std::move(promise)); ^ threadpool.hpp:94:81: error: expected primary-expression before …

4
Чи повинен кінцевий стиль синтаксису типу повернення стати типовим для нових програм C ++ 11? [зачинено]
Закрито . Це питання ґрунтується на думках . Наразі відповіді не приймаються. Хочете покращити це питання? Оновіть питання, щоб на нього можна було відповісти фактами та цитатами, відредагувавши цю публікацію . Закрито 3 роки тому . Удосконалюйте це питання C ++ 11 підтримує новий синтаксис функції: auto func_name(int x, int …

3
Constexpr проти макросів
Де мені краще віддати перевагу використанню макросів, а де - constexpr ? Хіба вони в основному не однакові? #define MAX_HEIGHT 720 проти constexpr unsigned int max_height = 720;
92 c++  c++11  macros  constexpr 

2
Коли зайві дужки впливають, крім переваги оператора?
Дужки в C ++ використовуються в багатьох місцях: наприклад, у викликах функцій та групуванні виразів, щоб замінити пріоритет оператора. Окрім незаконних зайвих дужок (наприклад, навколо списків аргументів викликів функцій), загальним, але не абсолютним правилом С ++ є те, що зайві дужки ніколи не зашкодять : 5.1 Первинні вирази [expr.prim] 5.1.1 …

4
cc1plus: помилка: нерозпізнана опція командного рядка “-std = c ++ 11” з g ++
Я намагаюся скомпілювати за допомогою g++або -std=c++11або c++0xпрапорців. Однак я отримую цю помилку cc1plus: error: unrecognized command line option "-std=c++11" g ++ --версія g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54) Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO …

2
Чому я не можу захопити це побічне посилання ('& this') у лямбда-записі?
Я розумію, як правильно зафіксувати this(змінити властивості об’єкта) в лямбда-режимі: auto f = [this] () { /* ... */ }; Але мені цікаво наступну особливість, яку я бачив: class C { public: void foo() { // auto f = [] () { // this not captured auto f = [&amp;] …
91 c++  c++11  lambda 


2
Помилка під час використання в класі ініціалізації нестатичного члена даних та конструктора вкладеного класу
Наступний код досить тривіальний, і я очікував, що він повинен скомпілюватись добре. struct A { struct B { int i = 0; }; B b; A(const B&amp; _b = B()) : b(_b) {} }; Я протестував цей код за допомогою g ++ версії 4.7.2, 4.8.1, clang ++ 3.2 та 3.3. …

5
Чому лямбда має розмір 1 байт?
Я працюю з пам’яттю деяких лямбд у C ++, але трохи здивований їх розміром. Ось мій тестовий код: #include &lt;iostream&gt; #include &lt;string&gt; int main() { auto f = [](){ return 17; }; std::cout &lt;&lt; f() &lt;&lt; std::endl; std::cout &lt;&lt; &amp;f &lt;&lt; std::endl; std::cout &lt;&lt; sizeof(f) &lt;&lt; std::endl; } Ви можете …
89 c++  c++11  lambda  c++14  sizeof 

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.