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

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

4
std :: function та std :: bind: що вони таке, і коли їх слід використовувати?
Я знаю, що таке функтори та коли їх використовувати з stdалгоритмами, але я не зрозумів, що Stroustrup каже про них у поширених запитаннях C ++ 11 . Чи може хтось пояснити, що std::bindі що std::function, коли їх слід використовувати, та навести кілька прикладів для новачків?

6
Перемістіть оператор призначення та `if (this! = & Rhs)`
В операторі присвоєння класу зазвичай потрібно перевірити, чи призначений об'єкт є об'єктом, що викликає, щоб ви не накручували речі: Class& Class::operator=(const Class& rhs) { if (this != &rhs) { // do the assignment } return *this; } Вам потрібна те ж саме для оператора призначення переміщення? Чи буває колись ситуація, …

2
Зйомка та параметр лямбда з такою ж назвою - хто відтіняє іншого? (кланг проти gcc)
auto foo = "You're using g++!"; auto compiler_detector = [foo](auto foo) { std::puts(foo); }; compiler_detector("You're using clang++!"); clang ++ 3.6.0 та новіші роздруківки "Ви використовуєте clang ++!" і попередити про те, що захоплення foo не використовується. g ++ 4.9.0 та новіші роздруківки "Ви використовуєте g ++!" і попередити про не …

3
1,0 є дійсним висновок від std :: generator_canonical?
Я завжди думав, що випадкові числа будуть лежати між нулем і одиницею, без1 , тобто це числа з напіввідкритого інтервалу [0,1). Довідки про на cppreference.com з std::generate_canonicalпідтверджує це. Однак, коли я запускаю таку програму: #include <iostream> #include <limits> #include <random> int main() { std::mt19937 rng; std::seed_seq sequence{0, 1, 2, 3, …
124 c++  c++11  random 

2
Чи фіксують c ++ 11 лямбда змінні, які вони не використовують?
Коли я [=]вказую, що я хотів би, щоб усі локальні змінні були зафіксовані за значенням у лямбда, чи це призведе до того, що всі локальні змінні функції викопіюються, або просто всі локальні змінні , які використовуються лямбда ? Наприклад, якщо у мене є: vector<int> my_huge_vector(100000); int my_measly_int; some_function([=](int i){ return …
124 c++  lambda  c++11 

3
Використання цього покажчика викликає дивну деоптимізацію в гарячому циклі
Нещодавно я натрапив на дивну деоптимізацію (а точніше, пропустив можливість оптимізації). Розглянемо цю функцію для ефективного розпакування масивів 3-бітових цілих чисел до 8-бітних цілих чисел. Він розпаковує 16 входів у кожній ітерації циклу: void unpack3bit(uint8_t* target, char* source, int size) { while(size > 0){ uint64_t t = *reinterpret_cast<uint64_t*>(source); target[0] = …

5
Чому C ++ 11 не підтримує призначені списки ініціалізаторів як C99? [зачинено]
Закрито . Це питання ґрунтується на думці . Наразі відповіді не приймаються. Хочете вдосконалити це питання? Оновіть питання, щоб на нього можна було відповісти фактами та цитатами, відредагувавши цю публікацію . Закрито 2 роки тому . Удосконаліть це питання Поміркуйте: struct Person { int height; int weight; int age; }; …
121 c++  c  c++11  initialization  c99 

6
помилка: використання видаленої функції
Я працюю над кодом C ++, який написав друг, і я отримую таку помилку, яку я ніколи не бачив при компілюванні з gcc4.6: error: use of deleted function ‘GameFSM_<std::array<C, 2ul> >::hdealt::hdealt()’ is implicitly deleted because the default definition would be ill-formed: uninitialized non-static const member ‘const h_t FlopPokerGameFSM_<std::array<C, 2ul> >::hdealt::h’ …

2
Як працює std :: tie?
Я використовував, std::tieне задумуючись над цим. Це працює, тому я щойно прийняв це: auto test() { int a, b; std::tie(a, b) = std::make_tuple(2, 3); // a is now 2, b is now 3 return a + b; // 5 } Але як працює ця чорна магія ? Як створюється тимчасова …
120 c++  c++11  tuples 

2
ініціалізувати вектор до нулів C ++ / C ++ 11
Я знаю, що в C ++ 11 вони додали функцію ініціалізації змінної до нуля як такої double number = {}; // number = 0 int data{}; // data = 0 Чи існує подібний спосіб ініціалізації std::vectorфіксованої довжини до всіх нульових?
118 c++  c++11 

7
Законність COW std :: виконання рядків в C ++ 11
Я розумів, що копіювання за записом не є життєздатним способом реалізації відповідного std::string в C ++ 11, але, коли нещодавно він з'явився в дискусії, я виявив, що не в змозі безпосередньо підтримати це твердження. Чи я правда, що C ++ 11 не допускає реалізацію на основі COW std::string ? Якщо …

1
Чи робить async (запуск :: async) в C ++ 11 пули потоків застарілими, щоб уникнути створення дорогих ниток?
Це питання пов'язане з цим питанням: Чи об'єднано std :: thread в C ++ 11? . Хоча питання відрізняється, намір однаковий: Запитання 1: Чи все-таки має сенс використовувати власний (або сторонні бібліотеки) пули потоків, щоб уникнути створення дорогих ниток? В іншому питанні було зроблено висновок про те, що ви не …

4
Як увімкнути C ++ 11 в gcc?
Я використовую gcc 4.8.1 від http://hpc.sourceforge.net на Mac OSX Mountain Lion. Я намагаюся скласти програму C ++, яка використовує to_stringфункцію в <string>. Мені потрібно використовувати прапор -std=c++11кожен раз: g++ -std=c++11 -o testcode1 code1.cpp Чи є спосіб включити цей прапор за замовчуванням?
117 c++11  g++ 

8
Що робить static_assert і для чого ви його використовуєте?
Чи можете ви навести приклад, коли static_assert(...)("C ++ 11") буде вирішувати проблему в руках елегантно? Я знайомий з часом виконання assert(...). Коли я віддаю перевагу static_assert(...)над регулярним assert(...)? Також у boostтому, що називається BOOST_STATIC_ASSERT, це те саме, що static_assert(...)?

8
Які різниці між C ++ 03 та C ++ 11 можна виявити під час виконання?
Можна записати функцію, яка при компіляції з компілятором C поверне 0, а при компіляції з компілятором C ++ поверне 1 (тривіальне сулюювання з #ifdef __cplusplusне цікаво). Наприклад: int isCPP() { return sizeof(char) == sizeof 'c'; } Звичайно, вищезазначене буде працювати лише в тому випадку, якщо sizeof (char)воно не те самеsizeof …

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