Запитання з тегом «c++»

C ++ - мова програмування загального призначення. Спочатку він був розроблений як розширення до C і має подібний синтаксис, але зараз це зовсім інша мова. Використовуйте цей тег для запитань про код (який потрібно) зібрати за допомогою компілятора C ++. Використовуйте тег, що стосується версії, для питань, пов’язаних із конкретною стандартною редакцією [C ++ 11], [C ++ 14], [C ++ 17] або [C ++ 20] тощо.

1
Чи може бути змінена вбудована змінна після ініціалізації в C ++ 17?
Мій сценарій такий (він працював у кланге, але не в gcc) liba.hpp: inline int MY_GLOBAL = 0; libother.cpp: (dll) #include "myliba.hpp" void myFunc() { // MYGLOBAL = 28; } someexe.cpp: RunAppThatUsesBothLibAandLibOther(); Проблема полягає в тому, що вбудована змінна показувала 0 в тих місцях, де я очікувала 28, оскільки вона була …
11 c++  visual-c++  dll  clang  c++17 

5
Чи гарантовано виклик деструктора локального об'єкта всередині циклу до наступної ітерації?
Коли у мене є цикл і всередині цього циклу створюю нову змінну стека (не виділяючи її на купу і змінну, утримуючи її, оголошену всередині корпусу циклу), чи гарантовано викликати руйнування цього об'єкта до початку наступної ітерації, або може розгортання циклу компілятором щось змінить?
11 c++  destructor 

1
std :: функція const правильність
Припустимо, я маю такий тип дзвінка: struct mutable_callable { int my_mutable = 0; int operator()() { // Not const return my_mutable++; } }; Зауважте, що mutable_callable має non-const, operator()що змінює змінну члена ..... Тепер припустимо, що я створюю std::functionсвій тип: std::function<int()> foo = mutable_callable{}; Тепер я можу це зробити: void …

1
Чи може проміжок бути constexpr?
Усі конструктори std :: span оголошені constexpr, однак я не можу змусити жодного з них працювати в контексті constexpr. Якщо коментувати будь-який з contexpr нижче, це призведе до помилки компіляції. #include <array> #include <span> int main() { constexpr int carray[3] = { 0, 1, 2 }; constexpr std::array<int, 3> array{ …
11 c++  constexpr  c++20 


5
Я можу визначити довжину масиву за допомогою константи, так чому б не працює int d [b]?
int a = 5; const int b = a, c = 4; int e[a]; int d[b]; int f[c]; Визначення f[c]є дійсним. Змінна bтакож є постійною int, але компілятор дав мені помилку "вираз повинен мати постійне значення" для рядка int d[b]. Які відмінності між bі c?
11 c++ 

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; } Спробуйте це на Godbolt Помилка компілятора: 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>(); } Спробуйте в Провіднику компілятора


1
Налаштуйте CMake у Windows, щоб використовувати кланг із командного рядка, щоб отримати сучасну підтримку OpenMP
У мене є невеликий тестовий проект, який використовує OpenMP для паралелізації. Моя мета - компілювати його, щоб він створював .dllі .libдля бібліотек (тому що мої реальні посилання на проект на зовнішні бібліотеки, що поширюються за допомогою цих типів), з підтримкою OpenMP 4.5 або новіших версій і робити це з командного …

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

3
Чи можу я використовувати std :: transform на місці з паралельною політикою виконання?
Якщо я не помиляюсь, я можу змусити std::transformвиконати на місці , використовуючи той самий діапазон, що ітератор вводу та виводу. Припустимо, у мене є якийсь std::vectorпредмет vec, тоді я б писав std::transform(vec.cbegin(),vec.cend(),vec.begin(),unary_op) використовуючи відповідну одинарну операцію unary_op. Використовуючи стандарт C ++ 17, я хотів би виконати перетворення паралельно, вставивши std::execution::parтуди …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.