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

118
инициализировать вектор нулями C ++ / C ++ 11

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

117
Что делает static_assert и для чего вы его используете?

Не могли бы вы привести пример, в котором static_assert(...)('C ++ 11') элегантно решит поставленную задачу? Я знаком с run-time assert(...). Когда я должен предпочесть static_assert(...)обычному assert(...)? Кроме того, boostтам что-то называется BOOST_STATIC_ASSERT, это то же самое, что и...

117
Делает ли async (launch :: async) в C ++ 11 устаревшими пулы потоков, чтобы избежать дорогостоящего создания потоков?

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

117
Законность реализации COW std :: string в C ++ 11

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

116
Какие различия, если таковые имеются, между C ++ 03 и C ++ 11 можно обнаружить во время выполнения?

Можно написать функцию, которая при компиляции с помощью компилятора C вернет 0, а при компиляции с помощью компилятора C ++ - 1 (тривиальное решение с помощью #ifdef __cplusplusне интересно). Например: int isCPP() { return sizeof(char) == sizeof 'c'; } Конечно, это будет работать, только если...

115
Как можно вызвать std :: forward для всех аргументов в вариативной функции?

Я просто писал универсальную объектную фабрику и использовал мета-библиотеку препроцессора boost для создания вариативного шаблона (с использованием 2010, а он их не поддерживает). Моя функция использует ссылки rval иstd::forward выполняет идеальную пересылку, и это заставило меня задуматься ......

115
В чем преимущество использования ссылок пересылки в циклах for на основе диапазона?

const auto&было бы достаточно, если я хочу выполнять операции только для чтения. Однако я наткнулся на for (auto&& e : v) // v is non-const пару раз за последнее время. Это заставляет меня задуматься: Возможно ли, что в некоторых непонятных угловых случаях есть некоторое преимущество в...

114
Предполагается ли комитетом по стандартам C ++, что в C ++ 11 unordered_map уничтожает то, что вставляет?

Я только что потерял три дня своей жизни, отслеживая очень странную ошибку, когда unordered_map :: insert () уничтожает вставленную вами переменную. Это крайне неочевидное поведение наблюдается только в самых последних компиляторах: я обнаружил, что clang 3.2–3.4 и GCC 4.8 - единственные...

114
Какой лучший способ перебрать два или более контейнеров одновременно

C ++ 11 предоставляет несколько способов перебора контейнеров. Например: Цикл на основе диапазона for(auto c : container) fun(c) std :: for_each for_each(container.begin(),container.end(),fun) Однако каков рекомендуемый способ перебора двух (или более) контейнеров одинакового размера для выполнения...

113
Как вы можете перебирать элементы std :: tuple?

Как я могу перебирать кортеж (используя C ++ 11)? Я пробовал следующее: for(int i=0; i<std::tuple_size<T...>::value; ++i) std::get<i>(my_tuple).do_sth(); но это не работает: Ошибка 1: извините, не реализовано: невозможно развернуть "Listener ..." в список аргументов фиксированной...

113
Почему мы можем использовать std :: move для объекта const?

В C ++ 11 мы можем написать такой код: struct Cat { Cat(){} }; const Cat cat; std::move(cat); //this is valid in C++11 когда я звоню std::move, это означает, что я хочу переместить объект, т.е. я изменю объект. Перемещать constобъект нецелесообразно, так почему бы std::moveне ограничить такое...

113
Как кратко, портативно и тщательно засеять ГПСЧ mt19937?

Кажется, я вижу много ответов, в которых кто-то предлагает использовать <random>для генерации случайных чисел, обычно вместе с таким кодом: std::random_device rd; std::mt19937 gen(rd()); std::uniform_int_distribution<> dis(0, 5); dis(gen); Обычно это заменяет какую-то «нечестивую...

112
Можно ли преобразовать класс перечисления в базовый тип?

Есть ли способ преобразовать enum classполе в базовый тип? Я думал, что это будет автоматически, но, видимо, нет. enum class my_fields : unsigned { field = 1 }; unsigned a = my_fields::field; Это задание отклоняется GCC. error: cannot convert 'my_fields' to 'unsigned int' in...

112
Cout синхронизирован / потокобезопасен?

В общем, я предполагаю, что потоки не синхронизируются, пользователь должен выполнить соответствующую блокировку. Однако есть ли coutособая обработка в стандартной библиотеке? То есть, если несколько потоков пишут, coutмогут ли они повредить coutобъект? Я понимаю, что даже при синхронизации вы все...

111
Обеспечение порядка операторов в C ++

Предположим, у меня есть ряд операторов, которые я хочу выполнить в фиксированном порядке. Я хочу использовать g ++ с уровнем оптимизации 2, чтобы некоторые операторы можно было переупорядочить. Какие инструменты нужны, чтобы обеспечить определенный порядок высказываний? Рассмотрим следующий...