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

C ++ - это язык программирования общего назначения. Первоначально он был разработан как расширение C и имеет аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде (который будет скомпилирован с помощью компилятора C ++). Используйте тег, зависящий от версии, для вопросов, связанных с конкретной редакцией стандарта [C ++ 11], [C ++ 14], [C ++ 17] или [C ++ 20] и т. Д.

5
C ++ троичное назначение лямбда
Есть идеи, почему следующий фрагмент не компилируется? Он жалуется с ошибкой «ошибка: операнды к?: Есть разные типы» auto lambda1 = [&](T& arg) { ... }; auto lambda2 = [&](T& arg) { ... }; auto lambda = condition ? lambda1 : lambda2;

6
Невинный диапазон на основе петли не работает
Следующее не компилируется: #include <iostream> int main() { int a{},b{},c{},d{}; for (auto& s : {a, b, c, d}) { s = 1; } std::cout << a << std::endl; return 0; } Попробуй это на Годболте Ошибка компилятора: error: assignment of read-only reference 's' Теперь в моем реальном случае список состоит …

2
Вызов лямбда неоднозначен, несмотря на явное указание типа возврата
Перегруженная функция должна принимать оба функтора, учитывая, что тип лямбды можно разрешить (можно преобразовать в std::function(пожалуйста, исправьте меня, если я ошибаюсь). Вопрос в том, почему ниже приведена ошибка компиляции, несмотря на то, что лямбда-тип явно определен? ( [&]() -> Type {}) Обратите внимание, что для моего текущего решения мне нужен …


1
Может ли переменный шаблон передаваться как аргумент шаблона шаблона?
Следующий бессмысленный пример не компилируется, но есть ли другой способ передать шаблон переменной в качестве аргумента шаблона шаблона? template<typename T> constexpr auto zero = T{0}; template<typename T, template<typename> auto VariableTemplate> constexpr auto add_one() { return VariableTemplate<T> + T{1}; } int main() { return add_one<int, zero>(); } Попробуйте в Compiler Explorer


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

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

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

7
Стирание () элемента в векторе не работает
У меня есть вектор. Мне нужно удалить последние 3 элемента в нем. Описал эту логику. Программа вылетает. В чем может быть ошибка? vector<float>::iterator d = X.end(); for (size_t i = 1; i < 3; i++) { if (i == 1) X.erase(d); else X.erase(d - i); }
10 c++  vector 

1
Доступ к члену в структуре через переменную в C ++
У меня есть структура с двумя членами, например: struct DataSet { int x; int y; }; ... и я должен получить доступ к тем в методе, но только по одному за раз, например: void foo(StructMember dsm) { // ("StructMember" does not exist) DataSet ds; ds.x = 4; ds.y = 6; …
10 c++ 

2
Вывод типов аргументов шаблона шаблона C ++
У меня есть код, который находит и распечатывает совпадения шаблона, как проходя через контейнер строк. Печать выполняется в функции foo, которая является шаблонной. Код #include <iostream> #include <algorithm> #include <iterator> #include <vector> #include <string> #include <tuple> #include <utility> template<typename Iterator, template<typename> class Container> void foo(Iterator first, Container<std::pair<Iterator, Iterator>> const &findings) …

1
Почему в std :: span отсутствуют операторы сравнения?
Разве это не было std::spanразработано как облегченная ссылка на подобласти массиваstd::vector / std::array/ plain ? Разве он не должен содержать операторы сравнения в своем API, чтобы соответствовать им? Что было причиной исключения? Примечание: операторы сравнения, я имею в виду либо полный набор ( <, <=, ...) или космический корабль<=>
10 c++  std  c++20  std-span 

1
Разрешена ли арифметика указателей на выделенном хранилище начиная с C ++ 20?
В стандарте C ++ 20 говорится, что типы массивов являются неявными типами времени жизни . Означает ли это, что массив неявного типа времени жизни может быть создан неявно? Неявное создание такого массива не будет вызывать создание элементов массива? Рассмотрим этот случай: //implicit creation of an array of std::string //but not …

3
Несовместимое усечение беззнаковых целочисленных выражений битового поля между C ++ и C в разных компиляторах
Изменить 2 : Я отлаживал странный тестовый сбой, когда функция, ранее находившаяся в исходном файле C ++, но дословно перемещенная в файл C, начала возвращать неверные результаты. MVE ниже позволяет воспроизвести проблему с GCC. Однако, когда я по прихоти скомпилировал пример с Clang (а позже с VS), я получил другой …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.