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

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

2
Чи перехід через ініціалізацію змінної неправильно сформований чи це викликає не визначену поведінку?
Розглянемо цей код: void foo() { goto bar; int x = 0; bar: ; } GCC і Clang відкидають це , оскільки перехід на bar:обхід ініціалізації змінної. MSVC взагалі не скаржиться (крім використання xпісля bar:викликає попередження). Ми можемо зробити аналогічну річ із switch: void foo() { switch (0) { int …

1
Чому стандартний файл C ++ обробляє файл так, як це робиться?
C ++ використовує streamoffтип для відображення зміщення в потоці (файл) і визначається наступним чином у [stream.types]: using streamoff = implementation-defined ; Тип streamoff є синонімом одного з підписаних основних інтегральних типів достатнього розміру, щоб представити максимально можливий розмір файлу для операційної системи. 287) 287) Зазвичай довгий довгий. Це має сенс, …

1
Чому летуча застаріла в C ++ 20?
Відповідно до cppreference , більшість застосувань volatileключового слова повинні бути застаріли в C ++ 20. У чому недолік volatile? І яке альтернативне рішення, коли не використовується volatile?
17 c++  volatile  c++20 

1
Чи правильно Кланг відхиляти код, у якому вкладений клас шаблону класу визначається лише за допомогою спеціалізації?
Дано такий шаблон класу: template<typename T> struct Outer { struct Inner; auto f(Inner) -> void; }; ми визначаємо Innerокремо для кожної спеціалізації Outer: template<> struct Outer<int>::Inner {}; template<> struct Outer<double>::Inner {}; а потім fодин раз визначити функцію члена для всіх спеціалізацій Outer: auto Outer<T>::f(Inner) -> void { } але Кланг …

4
Чому std :: функція не бере участі у вирішенні перевантаження?
Я знаю, що наступний код не компілюється. void baz(int i) { } void baz() { } class Bar { std::function<void()> bazFn; public: Bar(std::function<void()> fun = baz) : bazFn(fun){} }; int main(int argc, char **argv) { Bar b; return 0; } Тому що std::function, як я читав у цьому іншому дописі, …

2
Це старий конструктор стилю C ++?
Ось фрагмент коду С ++. У цьому прикладі багато блоків коду виглядають як виклики конструктора. На жаль, блокового коду №3 немає (Ви можете перевірити це за допомогою https://godbolt.org/z/q3rsxn та https://cppinsights.io ). Я думаю, що це стара позначка C ++, і це могло б пояснити введення нової нотації конструкції C ++ …
17 c++  c++11 

1
Будь-які проблеми, які замінюють глобальний const char [] на constexpr string_view?
Наша команда працює з базою кодів C ++ для 10+ років і нещодавно перейшла на компілятор C ++ 17. Тож ми шукаємо шляхи модернізації нашого коду. У конференції на YouTube я почув пропозицію замінити const char*глобальні рядки на constexpr string_view. Оскільки const char*в нашому коді є досить багато таких глобальних …

3
Чи є спосіб встановити Valgrind на Каталіну?
Чи є спосіб встановити Valgrind на Каталіну і правильно запустити його? Якщо так, то я дуже вдячний поетапному процесу. Я спробував встановити Valgrind за допомогою https://github.com/sowson/valgrind, але коли я тестував його helloWorld.cppна терміналі, консоль повертала помилки, я не повинен був отримати. Я не впевнений, чи допустив я помилку зі свого …

2
Неоднозначні шаблони перевантаження
У мене є наступний шаблонний код #include <vector> #include <array> #include <iostream> template<typename T1> void foo(std::vector<T1> bar) { std::cout << "GENERIC" << std::endl; } template<typename T1> void foo(std::vector<std::vector<T1>> bar) { std::cout << "SPECIFIC (vector)" << std::endl; } template<typename T1, int SIZE> void foo(std::vector<std::array<T1, SIZE>> bar) { std::cout << "SPECIFIC (array)" …
16 c++  templates 

3
Оптимізація цільової функції R з Rcpp повільніше, чому?
Зараз я працюю над методом Байєса, який вимагає декількох кроків оптимізації багаточленної моделі logit за ітерацію. Я використовую Optim () для виконання цих оптимізацій, і об'єктивна функція, написана в Р. Профілювання показало, що Optim () є основним вузьким місцем. Після копання я знайшов це питання, в якому вони припускають, що …
16 c++  r  optimization  rcpp 

1
std :: пара <авто, авто> тип повернення
Я грав autoу std::pair. У наведеному нижче коді функція fповинна повертати а std::pairтипів, які залежать від параметра шаблону. Робочий приклад: ПРИКЛАД 1 template &lt;unsigned S&gt; auto f() { if constexpr (S == 1) return std::pair{1, 2}; // pair of ints else if constexpr (S == 2) return std::pair{1.0, 2.0}; // …

2
Чи std :: встановлює збереження об'єктів постійно в пам'яті?
Як std::setзберігає об'єкти у суміжній пам'яті, якstd::vector ? Я не зміг знайти це в Інтернеті, cppreference не згадує деталі про розподіл пам'яті. Але я не бачу, чому він не міг би використовувати суміжну пам'ять, звідси і моє запитання.
16 c++  set  stdset 

3
Варіатичні шаблони: розгортайте аргументи в групах
У мене є функція, яка бере два аргументи: template &lt;typename T1, typename T2&gt; void foo(T1 arg1, T2 arg2) { std::cout &lt;&lt; arg1 &lt;&lt; " + " &lt;&lt; arg2 &lt;&lt; '\n'; } І варіант, який повинен пересилати свої аргументи парами: template &lt;typename... Args&gt; void bar(Args&amp;&amp;... args) { static_assert(sizeof...(Args) % 2 == …

1
Чи може розмір (enum) відрізнятися від sizeof (std :: underlying_type <Enum> :: type)?
Нещодавно з'явився огляд коду, що в наступному прикладі: enum class A : uint8_t { VAL1, VAL2 }; ... std::vector&lt;A&gt; vOfA; // Assume this is sized and full of some stuff. std::memcpy(wire_buffer, vOfA.data(), vOfA.size() * sizeof(A)); Ми повинні використовувати sizeof(std::underlying_type&lt;A&gt;::type)замість цього sizeof(A). Чи можливо, що вони коли-небудь можуть відрізнятися? У когось …

2
[[no_unique_address]] і два значення одного члена
Я граю разом [[no_unique_address]]з c++20. У прикладі cppreference у нас є порожній тип Emptyта типZ struct Empty {}; // empty class struct Z { char c; [[no_unique_address]] Empty e1, e2; }; Мабуть, розмір Zповинен бути хоча б 2тому, що типи e1та e2однакові. Однак мені дуже хочеться мати Zрозміри 1. Це …

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