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

12
Инициализация вектора атомности

Рассматривать: void foo() { std::vector<std::atomic<int>> foo(10); ... } Содержимое foo теперь действительно? Или мне нужно явно выполнить цикл и инициализировать их? Я проверил на Godbolt, и, кажется, все в порядке, однако стандарт кажется очень запутанным в этом вопросе. Конструктор...

12
Эффективная стабильная сумма упорядоченных чисел

У меня есть довольно длинный список положительных чисел с плавающей точкой ( std::vector<float>, размер ~ 1000). Числа отсортированы в порядке убывания. Если я суммирую их в следующем порядке: for (auto v : vec) { sum += v; } Я предполагаю, что у меня может быть некоторая проблема с числовой...

12
Передача концепции в функцию

Поскольку понятия определены как предикаты времени компиляции, возможно ли также фактически использовать эти предикаты для алгоритмов времени компиляции? Например, можно ли проверить, все ли типы в кортеже соответствуют концепции? Насколько я видел, невозможно передать концепцию какой-либо функции,...

12
Невозможно полностью определить имя класса в внеклассном объявителе определения функции

Эта программа приводит к нежелательному тупику разбора: struct float4x4 {}; class C { float4x4 M(); }; float4x4 ::C::M() { return float4x4{}; } : 8: 1: ошибка: нет члена с именем 'C' в 'float4x4'; Вы имели в виду просто «С»? float4x4 :: C :: M () ^ ~~~~~~~~~~~ Который может быть «исправлен» с...

12
Как менеджеры пакетов Linux будут обрабатывать модули C ++ 20?

Мы находимся в 2020 году, и C ++ 20 идет вместе с долгожданной функцией модулей C ++. Но после просмотра нескольких выступлений на CppCon я обнаружил, что модули C ++ находятся в странном месте, особенно для менеджеров пакетов Linux (pacman, apt, emerge и т. Д.) Из того, что я узнал, модули C ++...

12
Что предотвращает перекрытие смежных членов в классах?

Рассмотрим следующие три structс: class blub { int i; char c; blub(const blub&) {} }; class blob { char s; blob(const blob&) {} }; struct bla { blub b0; blob b1; }; На типовых платформах, где int4 байта, размеры, выравнивания и общее заполнение 1 следующие: struct size alignment padding...

12
Стандартно ли гарантировано, что лямбда без захвата будет пустой?

Я ищу способ идентифицировать пустые (без захвата) лямбды из других лямбд в функции шаблона. В настоящее время я использую C ++ 17, но мне тоже интересно узнать ответы на C ++ 20. Мой код выглядит так: template<typename T> auto func(T lambda) { // The aguments of the lambdas are unknown if...

12
Определение C ++ 20 вне класса в шаблонном классе

Вплоть до C ++ 20 стандарта C ++, когда мы хотели определить внеклассный оператор, который использует некоторые закрытые члены шаблонного класса, мы использовали конструкцию, подобную этой: template <typename T> class Foo; template <typename T> constexpr bool operator==(T lhs, const...

12
Можно ли объединить две строки типа `const char *` во время компиляции?

Очевидно, что мы можем объединить два строковых литерала в constexprфункции, но как насчет объединения строкового литерала со строкой, возвращенной другой constexprфункцией, как в коде ниже? template <class T> constexpr const char * get_arithmetic_size() { switch (sizeof(T)) { case 1: return...

12
Возможное неопределенное поведение в примитивной реализации static_vector

tl; dr: я думаю, что мой static_vector имеет неопределенное поведение, но я не могу его найти. Эта проблема на Microsoft Visual C ++ 17. У меня есть эта простая и незавершенная реализация static_vector, то есть вектор с фиксированной емкостью, который может быть выделен в стеке. Это программа C ++...

12
Требуется ли для «равенства_компараблей_схем» `общего_референции`?

Концепцияequality_­comparable_with<T, U> призвана заявить , что объекты типа Tи Uмогут быть сравнены равны друг другу, и если они есть, то это имеет ожидаемый смысл. Хорошо. Тем не менее, эта концепция также требует common_reference_t<T&, U&>существования....

12
Почему одноименные локальные переменные extern в разных блоках получают разные связи между компиляторами в c ++?

Пока я только проверял, какие связи предоставляются внешним локальным переменным, я обнаружил, что некоторые компиляторы ведут себя по- разному. например, если я тестировал приведенный ниже код, как вы видите в комментариях, переменные vars имеют разные связи // foo.cpp int var = 10; // external...

11
Сброс слабого_птра влияет на shared_ptr?

Я не очень привык к использованию weak_ptrи столкнулся с довольно запутанной ситуацией. Я использую Intel XE 2019 Composer update 5 ( пакет 2019.5.281 ) в сочетании с Visual Studio 2019 ver. 16.2.5 . Я компилирую в 64-битной версии. Я использую стандарт C ++ 17 . Вот код для моего решения спайка:...

11
Могу ли я использовать std :: transform вместо политики параллельного выполнения?

Если я не ошибаюсь, я могу заставить std::transformработать на месте , используя тот же диапазон, что и итератор ввода и вывода. Предположим, у меня есть какой-то std::vectorобъект vec, тогда я бы написал std::transform(vec.cbegin(),vec.cend(),vec.begin(),unary_op) используя подходящую унарную...

11
Сконфигурируйте CMake в Windows для использования clang из командной строки, чтобы получить современную поддержку OpenMP

У меня есть небольшой тестовый проект, который использует OpenMP для распараллеливания. Моя цель - скомпилировать его так, чтобы он создавал .dllи .libдля библиотек (потому что мой реальный проект ссылается на внешние библиотеки, распространяемые с использованием этих типов), с поддержкой OpenMP...