Tag: c ++ 11

В чем смысл дефолтных функций в C ++ 11?

C ++ 11 добавляет способность сообщать компилятору о создании реализации по умолчанию любой из специальных функций-членов . Хотя я вижу значение удаления функции, где значение явно дефолт функции? Просто оставьте поле пустым, и компилятор все равно сделает это. Единственное, что я вижу, это то, что конструктор по умолчанию создается только тогда, когда не существует другого […]

Должен ли я использовать атомный для переменной «exit» bool?

Мне нужно установить флаг для выхода из другого streamа. Этот другой stream проверяет флаг выхода время от времени. Должен ли я использовать атомный для флага или достаточно простого bool и почему (с примером того, что может пойти не так, если я использую простой bool)? #include bool exit = false; void thread_fn() { while(!exit) { //do […]

C ++ шаблоны для производительности?

Я видел онлайн несколько раз, о чем упоминалось, что C ++ может быть быстрее с использованием шаблонов. Может ли кто-нибудь объяснить, в том числе на низком уровне, почему это точно? Я всегда предполагал, что такая «хорошая» функция будет иметь накладные расходы, как и большинство полезных концепций. Я очень заинтригован этим с точки зрения с наименьшей […]

Выполнение static_assert, что тип шаблона является другим шаблоном

Как мне static_assert ? Может быть, Boost поддерживает его, если не C ++ или новые функции в C ++ 11? template struct foo {}; template struct bar { static_assert(FooType is indeed foo for some T,”failure”); //how? };

Как отдать приоритет привилегированной теме при блокировке мьютекса?

Прежде всего: я полностью новичок в mutex / многопоточном программировании, поэтому извините за любую ошибку заранее … У меня есть программа, которая запускает несколько streamов. Потоки (как правило, один на процессор ядра) выполняют множество вычислений и «размышлений», а затем иногда решают вызвать конкретный (общий) метод, который обновляет некоторые статистические данные. Параллелизм при обновлении статистики управляется […]

Поиск необработанного указателя для наборов unique_ptrs

Мне часто приходится писать код следующим образом: class MyClass { public: void addObject(std::unique_ptr&& newObject); void removeObject(const Object* target); private: std::set<std::unique_ptr> objects; }; Однако большая часть интерфейса std :: set выглядит бесполезной с помощью std :: unique_ptrs, так как для функций поиска требуются параметры std :: unique_ptr (которых я, очевидно, не имею, потому что они принадлежат […]

Ошибка компоновщика C ++ с classом static constexpr

Я компилирую следующую простую программу с g++-4.6.1 –std=c++0x : #include struct S { static constexpr int X = 10; }; int main() { return std::min(S::X, 0); }; Я получаю следующую ошибку компоновщика: /tmp/ccBj7UBt.o: In function `main’: scratch.cpp:(.text+0x17): undefined reference to `S::X’ collect2: ld returned 1 exit status Я понимаю, что встроенные в static статические члены […]

Право на перезаписывание std :: string null terminator?

В C ++ 11 мы знаем, что std::string гарантируется как смежный, так и завершающий нуль (или более педантично, завершенный charT() , который в случае char является нулевым символом 0). Существует такой API C, который я должен использовать, который заполняет строку указателем. Он записывает всю строку + нулевой ограничитель. В C ++ 03 я всегда был […]

Как создать декартово произведение списка типов?

Я хотел бы создать перекрестное произведение списка типов с использованием вариативных шаблонов. Вот что я до сих пор: #include #include #include template struct type_list {}; template struct type_pair {}; template struct row { typedef type_list<type_pair…> type; }; template struct cross_product { typedef type_list<typename row::type…> type; }; int main() { int s; typedef cross_product::type result; std::cout […]

У встроенных типов есть семантика перемещения?

Рассмотрим этот код: #include using namespace std; void Func(int&& i) { ++i; } int main() { int num = 1234; cout << "Before: " << num << endl; Func(std::move(num)); cout << "After: " << num << endl; } Его выход: Before: 1234 After: 1235 Ясно, что i изменяется внутри Func , поскольку он привязан к […]

Давайте будем гением компьютера.