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

88
Функция, возвращающая лямбда-выражение

Интересно, можно ли написать функцию, возвращающую лямбда-функцию на C ++ 11. Конечно, одна проблема - как объявить такую ​​функцию. У каждой лямбды есть тип, но этот тип нельзя выразить в C ++. Я не думаю, что это сработает: auto retFun() -> decltype ([](int x) -> int) { return [](int x) {...

88
Как получить целочисленный идентификатор потока в c ++ 11

c ++ 11 имеет возможность получить текущий идентификатор потока, но он не может быть приведен к целочисленному типу: cout<<std::this_thread::get_id()<<endl; вывод: 139918771783456 cout<<(uint64_t)std::this_thread::get_id()<<endl; ошибка: недопустимое приведение из типа 'std...

88
Почему я не могу создать вектор лямбда-выражений (одного типа) в C ++ 11?

Я пытался создать вектор лямбда, но не смог: auto ignore = [&]() { return 10; }; //1 std::vector<decltype(ignore)> v; //2 v.push_back([&]() { return 100; }); //3 До строки №2 компилируется нормально . Но строка №3 дает ошибку компиляции : ошибка: нет соответствующей функции для...

88
Есть ли неатомарный эквивалент std :: shared_ptr? А почему его нет в <памяти>?

Это вопрос из двух частей, касающихся атомарности std::shared_ptr: 1. Насколько я могу судить, std::shared_ptrэто единственный умный указатель в <memory>этом атомарном. Мне интересно, есть ли std::shared_ptrдоступная неатомарная версия (я ничего не вижу <memory>, поэтому я также открыт...

88
По умолчанию, значение и нулевой беспорядок инициализации

Я очень запутался в инициализации значений, значений по умолчанию и нуля. и особенно когда они вступают в силу различных стандартов C ++ 03 и C ++ 11 (и C ++ 14 ). Я цитирую и пытаюсь расширить действительно хороший ответ Value- / Default- / Zero- Init C ++ 98 и C ++ 03 здесь, чтобы сделать его...

87
Как работает диапазон на основе для простых массивов?

В C ++ 11 вы можете использовать диапазон for, который действует как foreachдругие языки. Он работает даже с простыми массивами C: int numbers[] = { 1, 2, 3, 4, 5 }; for (int& n : numbers) { n *= 2; } Как он узнает, когда остановиться? Работает ли он только со статическими массивами, которые...

87
Каковы правильные параметры ссылки для использования std :: thread в GCC под Linux?

Привет, я пытаюсь использовать std::threadс G ++. Вот мой тестовый код #include <thread> #include <iostream> int main(int, char **){ std::thread tt([](){ std::cout<<"Thread!"<<std::endl; }); tt.join(); } Он компилируется, но когда я пытаюсь его запустить, результат:...

87
C ++ 11: количество параметров функции шаблона с переменным размером?

Как я могу подсчитать количество аргументов функции вариативного шаблона? то есть: template<typename... T> void f(const T&... t) { int n = number_of_args(t); ... } Как лучше всего реализовать number_of_argsвышеперечисленное?...

87
C ++ 11 позволяет внутри класса инициализировать нестатические и неконстантные члены. Что изменилось?

До C ++ 11 мы могли выполнять инициализацию внутри класса только для статических констант целочисленного или перечислимого типа. Страуструп обсуждает это в своем FAQ по C ++ , приводя следующий пример: class Y { const int c3 = 7; // error: not static static int c4 = 7; // error: not const static...

87
С ++ 11 emplace_back в векторе <struct>?

Рассмотрим следующую программу: #include <string> #include <vector> using namespace std; struct T { int a; double b; string c; }; vector<T> V; int main() { V.emplace_back(42, 3.14, "foo"); } Не работает: $ g++ -std=gnu++11 ./test.cpp In file included from...

87
Надежны ли экспериментальные возможности современного C ++ для долгосрочных проектов?

У меня есть проект, который в настоящее время использует C ++ 11/14, но для этого требуется что-то вроде того std::filesystem, что доступно только в C ++ 17, и, следовательно, у меня нет возможности его использовать. Однако я вижу, что в моем текущем компиляторе он доступен как...

87
std :: array против производительности массива

Если я хочу построить очень простой массив, например int myArray[3] = {1,2,3}; Должен ли я использовать std::arrayвместо этого? std::array<int, 3> a = {{1, 2, 3}}; В чем преимущества использования std :: array перед обычными? Он более производительный? Просто проще обрабатывать копирование /...

86
Как закодировать оператор по модулю (%) в C / C ++ / Obj-C, который обрабатывает отрицательные числа

Одна из моих любимых ненавистников к языкам, производным от C (как математик), заключается в том, что (-1) % 8 // comes out as -1, and not 7 fmodf(-1,8) // fails similarly Какое лучшее решение? C ++ допускает возможность использования шаблонов и перегрузки операторов, но и то, и другое для меня...

86
Как проверить, работает ли все еще std :: thread?

Как я могу проверить, работает ли std::threadеще (независимо от платформы)? У него нет timed_join()метода, и joinable()он не предназначен для этого. Я думал заблокировать мьютекс с помощью a std::lock_guardв потоке и использовать try_lock()метод мьютекса, чтобы определить, заблокирован ли он...

86
Можно ли определить количество элементов класса перечисления c ++?

Можно ли определить количество элементов c ++ enum class: enum class Example { A, B, C, D, E }; Я пробовал использовать sizeof, но возвращает размер элемента перечисления. sizeof(Example); // Returns 4 (on my architecture) Есть ли стандартный способ получить мощность (5 в моем примере)?...