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

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

4
имеет ли `const auto` какое-либо значение?
Думаю, вопрос достаточно ясен. Будет ли autoключевое слово автоматически определять константу или всегда возвращать неконстантный тип, даже если есть, например. две версии функции (одна возвращает, constа другая - нет). Для протокола: я использую const auto end = some_container.end()перед циклами for, но не знаю, необходимо ли это или даже отличается от …
83 c++  c++11  constants 

3
Получить статус std :: future
Можно ли проверить std::future, закончился или нет? Насколько я могу судить, единственный способ сделать это - позвонить wait_forс нулевой продолжительностью и проверить, есть ли статус ready, но есть ли способ лучше?

4
Почему новая случайная библиотека лучше, чем std :: rand ()?
Итак, я увидел доклад под названием rand () Считается вредным, и он выступал за использование парадигмы механизма распределения генерации случайных чисел std::rand()вместо парадигмы простого плюс модуля. Однако я хотел увидеть недостатки из std::rand()первых рук, поэтому провел небольшой эксперимент: В принципе, я написал 2 функции getRandNum_Old()и , getRandNum_New()что генерируется случайное число …
82 c++  c++11  random 

3
Что такое субнормальное число с плавающей запятой?
Справочная страница isnormal () сообщает: Определяет, является ли данное число с плавающей запятой arg нормальным, т. Е. Не равно нулю, субнормальному, бесконечному или NaN. Число, равное нулю, бесконечности или NaN, ясно, что это означает. Но это также говорит о субнормальном. Когда число ненормальное?

4
В чем разница между C ++ 0x и C ++ 11?
Я вижу смешанное использование этих двух терминов здесь, на SO. Википедия говорит C ++ 11, также ранее известный как C ++ 0x ... но я не знаю почему. Почему сначала он был назван C ++ 0x, а затем C ++ 11? Кроме того, что означает x? Моя догадка - как …
82 c++  c++11 

10
Является ли цикл for на основе диапазона устаревшим для многих простых алгоритмов?
Решение алгоритма: std::generate(numbers.begin(), numbers.end(), rand); Решение для цикла на основе диапазона: for (int& x : numbers) x = rand(); Зачем мне использовать более подробные std::generateциклы for на основе диапазона в C ++ 11?
81 c++  algorithm  stl  c++11  foreach 

6
Бьярн ошибается насчет этого примера ADL, или у меня есть ошибка компилятора?
Я читаю язык программирования C ++, 4-е издание ( Бьярна Страуструпа ) оаргумент-зависимый поиск. Вот цитата (26.3.6, Сверхагрессивный ADL): Поиск, зависящий от аргументов (часто называемый ADL), очень полезен, чтобы избежать многословия (14.2.4). Например: #include <iostream> int main() { std::cout << "Hello, world" << endl; // OK because of ADL } …

12
Неиспользуемый параметр в c ++ 11
В c ++ 03 и ранее, чтобы отключить предупреждение компилятора о неиспользуемом параметре, я обычно использую такой код: #define UNUSED(expr) do { (void)(expr); } while (0) Например int main(int argc, char *argv[]) { UNUSED(argc); UNUSED(argv); return 0; } Но макросы - не лучшая практика для C ++, поэтому. Есть ли …

10
Использование std :: vector для просмотра сырой памяти
Я использую внешнюю библиотеку, которая в какой-то момент дает мне необработанный указатель на массив целых чисел и размер. Теперь я хотел бы использовать std::vectorдля доступа и изменения этих значений на месте, а не доступ к ним с помощью необработанных указателей. Вот примерный пример, который объясняет суть: size_t size = 0; …
71 c++  c++11  vector  stdvector 

5
Как получить адрес лямбда-функции C ++ внутри самой лямбды?
Я пытаюсь выяснить, как получить адрес лямбда-функции внутри себя. Вот пример кода: []() { std::cout << "Address of this lambda function is => " << ???? }(); Я знаю, что могу перехватить лямбду в переменной и напечатать адрес, но я хочу сделать это на месте, когда эта анонимная функция выполняется. …
53 c++  c++11  lambda  c++14  c++17 

3
C ++ decltype и круглые скобки - почему?
Тема обсуждалась раньше , но это не дубликат. Когда кто-то спрашивает о разнице между decltype(a)и decltype((a)), обычный ответ - aэто переменная, (a)это выражение. Я считаю этот ответ неудовлетворительным. Во-первых, aэто также выражение. Варианты основного выражения включают, среди прочего: (выражение) ID-выражение Что еще более важно, формулировка для decltype рассматривает скобки очень …

6
Безопасно ли поменять местами два разных вектора в C ++, используя метод std :: vector :: swap?
Предположим, что у вас есть следующий код: #include <iostream> #include <string> #include <vector> int main() { std::vector<std::string> First{"example", "second" , "C++" , "Hello world" }; std::vector<std::string> Second{"Hello"}; First.swap(Second); for(auto a : Second) std::cout << a << "\n"; return 0; } Представьте, что вектора нет std::string, но классы: std::vector<Widget> WidgetVector; std::vector<Widget2> …
30 c++  c++11  vector  stdvector  swap 

3
Как я могу предотвратить угадывание C ++ второго аргумента шаблона?
Я использую библиотеку C ++ ( strf ), которая где-то внутри имеет следующий код: namespace strf { template <typename ForwardIt> inline auto range(ForwardIt begin, ForwardIt end) { /* ... */ } template <typename Range, typename CharT> inline auto range(const Range& range, const CharT* sep) { /* ... */ } } …

2
Как проверить, определены ли целые числа фиксированной ширины
В C ++ целые числа фиксированной ширины определены как необязательные , но я не могу найти рекомендуемый способ проверить, действительно ли они определены. Что бы было портативным способом проверить, доступны ли целые числа фиксированной ширины?
25 c++  c++11  types  stdint  cstdint 

3
Отличие поведения изменяемого захвата лямбда-функции от ссылки на глобальную переменную
Я обнаружил, что результаты в разных компиляторах различны, если я использую лямбду для захвата ссылки на глобальную переменную с изменяемым ключевым словом, а затем изменяю значение в лямбда-функции. #include <stdio.h> #include <functional> int n = 100; std::function<int()> f() { int &m = n; return [m] () mutable -> int { …

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