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

142
Является ли передача по значению разумным значением по умолчанию в C ++ 11?

В традиционном C ++ передача по значению в функции и методы является медленной для больших объектов и обычно не одобряется. Вместо этого программисты на C ++ стремятся передавать ссылки, что быстрее, но при этом возникает множество сложных вопросов, касающихся владения и особенно управления памятью...

142
Какого типа лямбда-выражения выводятся с помощью «auto» в C ++ 11?

У меня было ощущение, что тип лямбда - это указатель на функцию. Когда я выполнил следующий тест, я обнаружил, что это неправильно ( демо ). #define LAMBDA [] (int i) -> long { return 0; } int main () { long (*pFptr)(int) = LAMBDA; // ok auto pAuto = LAMBDA; // ok assert(typeid(pFptr) ==...

141
Что я могу сделать с перемещенным объектом?

Определяет ли стандарт точно, что я могу делать с объектом после его перемещения? Раньше я думал, что все, что вы можете сделать с перемещенным объектом, - это уничтожить его, но этого было бы недостаточно. Например, возьмите шаблон swapфункции, определенный в стандартной библиотеке: template...

140
Какие новые возможности добавляют в C ++ определяемые пользователем литералы?

C ++ 11 вводит определяемые пользователем литералы , которые позволят введение нового буквального синтаксиса на основе существующих литералов ( int, hex, string, float) , так что любой тип будет иметь возможность буквального представления. Примеры: // imaginary numbers std::complex<long...

140
Когда я должен использовать std :: thread :: detach?

Иногда я должен использовать std::threadдля ускорения моего приложения. Я также знаю, join()ждет, пока поток не завершится. Это легко понять, но в чем разница между звонком detach()и не звонком? Я думал, что без detach(), метод потока будет работать с использованием потока независимо. Не отрываясь:...

139
Эффективный C ++ по-прежнему эффективен?

Из того, что я увидел в этом посте, я решил начать читать книгу « Эффективный C ++» . Но теперь, когда появилось много новых функций из-за C ++ 11 и изменились некоторые передовые практики, я не уверен, действительно ли это хорошая идея. С появлением C ++ 11 устарели какие-либо советы,...

138
Как эмулировать поведение инициализации массива C «int arr [] = {e1, e2, e3,…}» с помощью std :: array?

(Примечание: этот вопрос касается того, что не нужно указывать количество элементов и по-прежнему разрешать непосредственную инициализацию вложенных типов.) В этом вопросе обсуждаются варианты использования, оставленные для массива C, например int arr[20];. В своем ответе @James Kanze показывает...

138
Есть ли причина, по которой && и || перегружены? не закорачивайте?

Короткое замыкание поведение операторов &&и ||удивительный инструмент для программистов. Но почему они теряют это поведение при перегрузке? Я понимаю, что операторы - это просто синтаксический сахар для функций, но операторы для boolимеют такое поведение, почему оно должно быть ограничено...

137
Удобное объявление строк времени компиляции в C ++

Возможность создавать строки и управлять ими во время компиляции в C ++ имеет несколько полезных приложений. Хотя в C ++ можно создавать строки во время компиляции, этот процесс очень громоздкий, поскольку строку необходимо объявить как последовательность символов с переменным числом аргументов,...

137
Как завершить поток в C ++ 11?

Мне не нужно правильно завершать поток или заставлять его отвечать на команду «завершить». Я заинтересован в принудительном завершении потока с использованием чистого C ++...

136
Как развернуть кортеж в аргументы функции шаблона переменной?

Рассмотрим случай шаблонной функции с переменными аргументами шаблона: template<typename Tret, typename... T> Tret func(const T&... t); Теперь у меня есть кортеж tзначений. Как мне вызвать, func()используя значения кортежа в качестве аргументов? Я читал об bind()объекте функции с...

136
Новый синтаксис «= default» в C ++ 11

Я не понимаю, зачем мне это делать: struct S { int a; S(int aa) : a(aa) {} S() = default; }; Почему бы просто не сказать: S() {} // instead of S() = default; зачем вводить для этого новый

135
Проверьте, имеет ли класс функцию-член заданной подписи

Я прошу уловку с шаблоном, чтобы определить, есть ли у класса конкретная функция-член данной подписи. Проблема похожа на проблему, указанную здесь http://www.gotw.ca/gotw/071.htm, но не то же самое: в пункте книги Саттера он ответил на вопрос, что класс C ДОЛЖЕН ПРЕДОСТАВЛЯТЬ функцию-член с...

135
Фьючерсы против обещаний

Я путаю себя с разницей между будущим и обещанием. Очевидно, у них разные методы и прочее, но каков фактический вариант использования? Это?: когда я управляю какой-то асинхронной задачей, я использую future, чтобы получить значение "в будущем" когда я выполняю асинхронную задачу, я использую...

135
C ++ 0x не имеет семафоров? Как синхронизировать потоки?

Правда ли, что C ++ 0x придет без семафоров? Уже есть несколько вопросов о переполнении стека относительно использования семафоров. Я использую их (семафоры posix) все время, чтобы позволить потоку ожидать какого-то события в другом потоке: void thread0(...) { doSomething0(); event1.wait(); ... }...

135
Можно ли выяснить тип параметра и тип возврата лямбда?

Учитывая лямбду, возможно ли выяснить ее тип параметра и тип возвращаемого значения? Если да, то как? В принципе, я хочу, lambda_traitsкоторый может быть использован следующими способами: auto lambda = [](int i) { return long(i*10); }; lambda_traits<decltype(lambda)>::param_type i; //i should...

135
Генерация случайных чисел с использованием случайной библиотеки C ++ 11

Как следует из названия, я пытаюсь найти способ генерирования случайных чисел с помощью новой <random>библиотеки C ++ 11 . Я пробовал это с этим кодом: std::default_random_engine generator; std::uniform_real_distribution<double> uniform_distance(1, 10.001); Проблема с кодом, который у...

135
Как я могу эффективно выбрать контейнер стандартной библиотеки в C ++ 11?

Есть хорошо известное изображение (шпаргалка) под названием «Выбор контейнера C ++». Это блок-схема, чтобы выбрать лучший контейнер для желаемого использования. Кто-нибудь знает, есть ли уже версия на C ++ 11? Это предыдущий:...