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

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

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

8
C ++ 11 зворотний діапазон на основі циклу
Чи є адаптер контейнера, який би змінював напрямок ітераторів, щоб я міг перебирати контейнер у зворотному напрямку з циклом для циклу? З явними ітераторами я би перетворив це: for (auto i = c.begin(); i != c.end(); ++i) { ... в це: for (auto i = c.rbegin(); i != c.rend(); ++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() …

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це ефективно. Я наводив …
276 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), ви передаєте її: за посиланням const: void foo(const shared_ptr<T>& p) або за значенням void foo(shared_ptr<T> p):? Я вважаю за краще перший метод, тому що я підозрюю, що це буде швидше. Але чи справді цього варто чи є додаткові питання? Скажіть, …
270 c++  c++11  boost  shared-ptr 

16
Чому C ++ не має сміттєзбірника?
Я не задаю цього питання через переваги перевезення сміття насамперед. Моя основна причина запитати це те, що я знаю, що Б'ярн Струструп сказав, що C ++ в якийсь момент матиме сміттєзбірник. З урахуванням сказаного, чому це не було додано? Вже є кілька сміттєзбірників для C ++. Це лише одна з …


10
Чому лямбда C ++ 11 за замовчуванням вимагає "змінне" ключове слово для отримання даних за значенням?
Короткий приклад: #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" } Питання: Для чого нам потрібне …
256 c++  lambda  c++11 

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

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: \ програмні файли (x86) \ Microsoft Visual Studio 10.0 …

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

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