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

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

4
Когда в C ++ 11 сделать тип неподвижным?
Я был удивлен, что это не появилось в моих результатах поиска, я подумал, что кто-то спросил бы об этом раньше, учитывая полезность семантики перемещения в C ++ 11: Когда мне нужно (или это хорошая идея) сделать класс неподвижным в C ++ 11? (Причины, отличные от проблем совместимости с существующим кодом.)

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

2
Лямбда-захват и параметр с тем же именем - кто затеняет другого? (clang против 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 ++!» и предупредить о неиспользовании параметра foo …

3
1.0 - допустимый вывод std :: generate_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 …
124 c++  lambda  c++11 

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

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> …

5
Почему C ++ 11 не поддерживает списки назначенных инициализаторов как C99? [закрыто]
Закрыто . Этот вопрос основан на мнении . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы на него можно было ответить фактами и цитатами, отредактировав этот пост . Закрыт 2 года назад . Уточните этот вопрос Рассматривать: struct Person { int height; int weight; …
121 c++  c  c++11  initialization  c99 

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 

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 Есть ли способ включить этот флаг по умолчанию?
119 c++11  g++ 

2
инициализировать вектор нулями C ++ / C ++ 11
Я знаю, что в C ++ 11 добавлена ​​функция инициализации переменной нулем как таковой. double number = {}; // number = 0 int data{}; // data = 0 Есть ли аналогичный способ инициализировать std::vectora фиксированной длины всеми нулями?
118 c++  c++11 

7
Законность реализации COW std :: string в C ++ 11
Я исходил из того, что копирование при записи не является жизнеспособным способом реализации согласования std::stringв C ++ 11, но когда недавно это обсуждалось, я обнаружил, что не могу напрямую поддержать это утверждение. Правильно ли я, что C ++ 11 не допускает реализации на основе COW std::string? Если да, то указано …

1
Делает ли async (launch :: async) в C ++ 11 устаревшими пулы потоков, чтобы избежать дорогостоящего создания потоков?
Это слабо связано с вопросом: объединены ли std :: thread в C ++ 11? , Хотя вопрос отличается, намерение остается тем же: Вопрос 1. Есть ли смысл использовать собственные пулы потоков (или сторонние библиотеки), чтобы избежать дорогостоящего создания потоков? Вывод в другом вопросе заключался в том, что нельзя полагаться на …

8
Что делает static_assert и для чего вы его используете?
Не могли бы вы привести пример, в котором static_assert(...)('C ++ 11') элегантно решит поставленную задачу? Я знаком с run-time 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)не то же самое, …

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