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

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

3
Есть ли способ установить Valgrind на Catalina?
Есть ли способ установить Valgrind на Catalina и правильно ли он работает? Если это так, я был бы очень признателен за пошаговый процесс. Я попытался установить Valgrind с https://github.com/sowson/valgrind, но когда я проверил helloWorld.cppна терминале, консоль вернула ошибки, которые я не должен был получить. Я не уверен, допустил ли я …

1
Любые ошибки заменить глобальный const char [] на constexpr string_view?
Наша команда работает с базой кода C ++ более 10 лет и недавно перешла на компилятор C ++ 17. Поэтому мы ищем способы модернизировать наш код. В ходе конференции на YouTube я услышал предложение заменить const char*глобальные строки на constexpr string_view. Поскольку const char*в нашем коде есть довольно много таких …

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 медленнее, почему?
В настоящее время я работаю над байесовским методом, который требует нескольких этапов оптимизации полиномиальной логит-модели на одну итерацию. Я использую optim () для выполнения этих оптимизаций, и целевая функция, написанная на R. Профилирование показало, что optim () является основным узким местом. Покопавшись, я нашел вопрос, в котором они предполагают, что …
16 c++  r  optimization  rcpp 

2
Как передать ссылку на аргумент typename шаблона
Есть ли способ передать ссылку в качестве аргумента аргументу типа имя шаблона? Я имею в виду, что вместо передачи int, например, чтобы передать ссылку на int. template <typename T> struct Foo { Foo(T arg) : ptr(arg) {} T ptr; }; int main() { int* a = new int(6); Foo<decltype(a)> foo1(a); …
16 c++  templates 

1
std :: pair <auto, auto> тип возвращаемого значения
Я играл с 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}; // …

1
Может ли sizeof (enum) отличаться от sizeof (std :: under_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). Возможно ли, что они могут отличаться? У кого-то есть стандартная …

3
Variadic шаблоны: раскрыть аргументы в группах
У меня есть функция, которая принимает два аргумента: 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 …

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одинаковы. Тем не менее, я действительно хочу иметь …

1
Почему функция conteval допускает неопределенное поведение?
В C ++ есть очень удобное свойство константных выражений: их оценка не может иметь неопределенного поведения ( 7.7.4.7 ): Выражение e является основным константным выражением, если при вычислении e, следуя правилам абстрактной машины ([intro.execution]), не будет выполнено одно из следующих действий: ... операция, которая будет иметь неопределенное поведение, как указано …

3
Почему деструктор не вызывается в операторе удаления?
Я пытался вызвать ::deleteкласс в operator deleteэтом. Но деструктор не называется. Я определил класс MyClass, operator deleteкоторый был перегружен. Глобал operator deleteтакже перегружен. Перегруженный operator deleteиз MyClassбудет вызывать перегруженный глобальный operator delete. class MyClass { public: MyClass() { printf("Constructing MyClass...\n"); } virtual ~MyClass() { printf("Destroying MyClass...\n"); } void* operator new(size_t …

9
Catalina C ++: использование заголовков <cmath> приводит к ошибке: в глобальном пространстве имен нет члена с именем signbit
После обновления до Каталины из Мохаве, настройка: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk в env. Я не могу скомпилировать программу, которая использует &lt;cmath&gt;заголовок. Я попытался изменить CFLAGS, CCFLAGS, CXXFLAGS, чтобы они указывали на расположение MacOSSDK, которое ничего не меняет Scanning dependencies of target OgreMain /Applications/Xcode.app/Contents/Developer/usr/bin/make -f OgreMain/CMakeFiles/OgreMain.dir/build.make OgreMain/CMakeFiles/OgreMain.dir/build [ 0%] Building CXX object OgreMain/CMakeFiles/OgreMain.dir/src/OgreASTCCodec.cpp.o cd …

2
Хранит ли std :: set объекты непрерывно в памяти?
Хранит ли std::setобъекты в непрерывной памяти как std::vector? Я не смог найти это в Интернете, cppreference не упоминает подробности о распределении памяти. Но я не понимаю, почему он не может использовать непрерывную память, поэтому мой вопрос.
16 c++  set  stdset 

5
Как создать перестановку в c ++ с использованием STL для числа мест меньше, чем общая длина
У меня есть c++ vectorс std::pair&lt;unsigned long, unsigned long&gt;объектами. Я пытаюсь генерировать перестановки объектов вектора с помощью std::next_permutation(). Однако, я хочу, чтобы перестановки имели заданный размер, вы знаете, аналогично permutationsфункции в python, где указан размер ожидаемой возвращаемой перестановки. В основном, c++эквивалент import itertools list = [1,2,3,4,5,6,7] for permutation in itertools.permutations(list, …

4
Убедитесь, что во время компиляции метод вызывается ровно в одном месте
Мне любопытно, можно ли гарантировать, что во время компиляции метод вызывается ровно в одном месте. Обратите внимание, что все в порядке, если функция вызывается более одного раза (например, в цикле), но ее не следует вызывать в двух отдельных циклах. Это может быть разбито на две части, меня также интересуют решения, …
15 c++ 

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