Я знаю, что в C ++ 11 добавлена функция инициализации переменной нулем как таковой. double number = {}; // number = 0 int data{}; // data = 0 Есть ли аналогичный способ инициализировать std::vectora фиксированной длины всеми...
Я знаю, что в C ++ 11 добавлена функция инициализации переменной нулем как таковой. double number = {}; // number = 0 int data{}; // data = 0 Есть ли аналогичный способ инициализировать std::vectora фиксированной длины всеми...
Не могли бы вы привести пример, в котором static_assert(...)('C ++ 11') элегантно решит поставленную задачу? Я знаком с run-time assert(...). Когда я должен предпочесть static_assert(...)обычному assert(...)? Кроме того, boostтам что-то называется BOOST_STATIC_ASSERT, это то же самое, что и...
Это слабо связано с вопросом: объединены ли std :: thread в C ++ 11? , Хотя вопрос отличается, намерение остается тем же: Вопрос 1. Есть ли смысл использовать собственные пулы потоков (или сторонние библиотеки), чтобы избежать дорогостоящего создания потоков? Вывод в другом вопросе заключался в...
Я исходил из того, что копирование при записи не является жизнеспособным способом реализации согласования std::stringв C ++ 11, но когда недавно это обсуждалось, я обнаружил, что не могу напрямую поддержать это утверждение. Правильно ли я, что C ++ 11 не допускает реализации на основе COW...
Я слышал, что это constозначает потокобезопасность в C ++ 11 . Это правда? Значит ли это constтеперь эквивалент Java «с synchronized? У них заканчиваются ключевые слова
Можно написать функцию, которая при компиляции с помощью компилятора C вернет 0, а при компиляции с помощью компилятора C ++ - 1 (тривиальное решение с помощью #ifdef __cplusplusне интересно). Например: int isCPP() { return sizeof(char) == sizeof 'c'; } Конечно, это будет работать, только если...
Рисунок 1: шаблоны функций TemplHeader.h template<typename T> void f(); TemplCpp.cpp template<typename T> void f(){ //... } //explicit instantation template void f<T>(); main.cpp #include "TemplHeader.h" extern template void f<T>(); //is this correct? int main() {...
У меня есть класс Writerс такой функцией writeVector: void Drawer::writeVector(vector<T> vec, bool index=true) { for (unsigned int i = 0; i < vec.size(); i++) { if (index) { cout << i << "\t"; } cout << vec[i] << "\n"; } } Я стараюсь не дублировать код, но при этом...
Я просто писал универсальную объектную фабрику и использовал мета-библиотеку препроцессора boost для создания вариативного шаблона (с использованием 2010, а он их не поддерживает). Моя функция использует ссылки rval иstd::forward выполняет идеальную пересылку, и это заставило меня задуматься ......
Что означает заявление return {}; в C ++ 11 указывают, а когда использовать вместо (скажем) return NULL; или return
const auto&было бы достаточно, если я хочу выполнять операции только для чтения. Однако я наткнулся на for (auto&& e : v) // v is non-const пару раз за последнее время. Это заставляет меня задуматься: Возможно ли, что в некоторых непонятных угловых случаях есть некоторое преимущество в...
У меня есть код, который более или менее похож на этот: #include <bitset> enum Flags { A = 1, B = 2, C = 3, D = 5, E = 8, F = 13, G = 21, H, I, J, K, L, M, N, O }; void apply_known_mask(std::bitset<64> &bits) { const Flags important_bits[] = { B, D, E, H, K, M, L, O };...
Я только что потерял три дня своей жизни, отслеживая очень странную ошибку, когда unordered_map :: insert () уничтожает вставленную вами переменную. Это крайне неочевидное поведение наблюдается только в самых последних компиляторах: я обнаружил, что clang 3.2–3.4 и GCC 4.8 - единственные...
C ++ 11 предоставляет несколько способов перебора контейнеров. Например: Цикл на основе диапазона for(auto c : container) fun(c) std :: for_each for_each(container.begin(),container.end(),fun) Однако каков рекомендуемый способ перебора двух (или более) контейнеров одинакового размера для выполнения...
Как я могу перебирать кортеж (используя C ++ 11)? Я пробовал следующее: for(int i=0; i<std::tuple_size<T...>::value; ++i) std::get<i>(my_tuple).do_sth(); но это не работает: Ошибка 1: извините, не реализовано: невозможно развернуть "Listener ..." в список аргументов фиксированной...
В C ++ 11 мы можем написать такой код: struct Cat { Cat(){} }; const Cat cat; std::move(cat); //this is valid in C++11 когда я звоню std::move, это означает, что я хочу переместить объект, т.е. я изменю объект. Перемещать constобъект нецелесообразно, так почему бы std::moveне ограничить такое...
Кажется, я вижу много ответов, в которых кто-то предлагает использовать <random>для генерации случайных чисел, обычно вместе с таким кодом: std::random_device rd; std::mt19937 gen(rd()); std::uniform_int_distribution<> dis(0, 5); dis(gen); Обычно это заменяет какую-то «нечестивую...
Есть ли способ преобразовать enum classполе в базовый тип? Я думал, что это будет автоматически, но, видимо, нет. enum class my_fields : unsigned { field = 1 }; unsigned a = my_fields::field; Это задание отклоняется GCC. error: cannot convert 'my_fields' to 'unsigned int' in...
В общем, я предполагаю, что потоки не синхронизируются, пользователь должен выполнить соответствующую блокировку. Однако есть ли coutособая обработка в стандартной библиотеке? То есть, если несколько потоков пишут, coutмогут ли они повредить coutобъект? Я понимаю, что даже при синхронизации вы все...
Предположим, у меня есть ряд операторов, которые я хочу выполнить в фиксированном порядке. Я хочу использовать g ++ с уровнем оптимизации 2, чтобы некоторые операторы можно было переупорядочить. Какие инструменты нужны, чтобы обеспечить определенный порядок высказываний? Рассмотрим следующий...