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

10
Почему я не могу получить индекс варианта и использовать его для получения его содержимого?

Я пытаюсь получить доступ к содержанию варианта. Я не знаю, что там, но, к счастью, вариант делает. Поэтому я подумал, что просто спрошу у варианта, в каком индексе он находится, а затем использую этот индекс для std::getсвоего содержимого. Но это не компилируется: #include <variant> int...

10
Утечка памяти во время исключения unordered_map :: insert KeyEqual с GCC - нарушение строгой гарантии безопасности исключения?

Я использую GCC 7.3.1, но также протестирован на coliru, который я считаю версией 9.2.0. Сборка со следующим: g++ -fsanitize=address -fno-omit-frame-pointer rai.cpp Вот rai.cpp: #include <iostream> #include <unordered_map> int main() { try { struct MyComp { bool operator()(const...

10
Сможем ли мы создавать контейнеры с представлениями в C ++ 20?

Диапазоны идут к C ++ со стандартной версией C ++ 20. Мой вопрос: сможем ли мы создать (существующие) контейнеры стандартной библиотеки с любым диапазоном? И что еще важнее, с диапазоном просмотров? Например, будет ли это: #include <vector> #include <iostream> #include <ranges>...

10
Вывод аргумента шаблона для аргумента типа функции

Рассмотрим следующую программу. #include <iostream> template <typename T> void f( void ( *fn )( T ) ) { fn( 42 ); } void g( int x ) { std::cout << "g( " << x << " );\n"; } int main() { f( g ); } Программа успешно компилируется, и ее вывод g( 42 ); Теперь давайте...

10
Зачем возвращать NULL из main ()?

Я иногда вижу кодеров, которые используют в NULLкачестве возвращаемого значения в программах main()на C и C ++, например что-то вроде этого: #include <stdio.h> int main() { printf("HelloWorld!"); return NULL; } Когда я компилирую этот код с помощью gcc, я получаю предупреждение:...

10
Проверка концепции TS игнорирует модификатор частного доступа

Я хочу написать концепцию Indexable, означающую, что последовательность либо имеет начало / конец, которые возвращают RandomAccessIterator, либо определен operator [] и возвращает значение не типа void. Я использовал идеи из статьи Страуструпа для концепции Sequence и дополнил ее: template...

10
Почему нельзя использовать диапазоны для функциональности библиотеки каналов?

Джонатан Боккара (автор Fluent C ++ ) написал библиотеку под названием pipe . Эта «труба», как гласит главная страница репозитория, не похожа на использование диапазонов, даже если она выглядит одинаково: она не основана на ленивом вытягивании, а скорее на энергичном толчке. Но заявлено, что нельзя...

10
Разрешена ли арифметика указателей на выделенном хранилище начиная с C ++ 20?

В стандарте C ++ 20 говорится, что типы массивов являются неявными типами времени жизни . Означает ли это, что массив неявного типа времени жизни может быть создан неявно? Неявное создание такого массива не будет вызывать создание элементов массива? Рассмотрим этот случай: //implicit creation of an...

10
Почему в std :: span отсутствуют операторы сравнения?

Разве это не было std::spanразработано как облегченная ссылка на подобласти массиваstd::vector / std::array/ plain ? Разве он не должен содержать операторы сравнения в своем API, чтобы соответствовать им? Что было причиной исключения? Примечание: операторы сравнения, я имею в виду либо полный набор...

10
Несовместимое усечение беззнаковых целочисленных выражений битового поля между C ++ и C в разных компиляторах

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

10
Вывод типов аргументов шаблона шаблона C ++

У меня есть код, который находит и распечатывает совпадения шаблона, как проходя через контейнер строк. Печать выполняется в функции foo, которая является шаблонной. Код #include <iostream> #include <algorithm> #include <iterator> #include <vector> #include <string>...

10
Доступ к члену в структуре через переменную в C ++

У меня есть структура с двумя членами, например: struct DataSet { int x; int y; }; ... и я должен получить доступ к тем в методе, но только по одному за раз, например: void foo(StructMember dsm) { // ("StructMember" does not exist) DataSet ds; ds.x = 4; ds.y = 6; std::cout << ds.dsm * ds.dsm...

10
Стирание () элемента в векторе не работает

У меня есть вектор. Мне нужно удалить последние 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); }...

9
Генерация лямбда-кода на C ++ с помощью Init Capture на C ++ 14

Я пытаюсь понять / уточнить код кода, который генерируется, когда перехваты передаются лямбдам, особенно в обобщенных перехватах инициализации, добавленных в C ++ 14. Дайте следующие примеры кода, перечисленные ниже, это мое текущее понимание того, что сгенерирует компилятор. Случай 1: захват по...

9
list :: empty () многопоточное поведение?

У меня есть список, из которого я хочу, чтобы разные темы брали элементы. Во избежание блокировки мьютекса, защищающего список, когда он пуст, я проверяю empty()перед блокировкой. Это нормально, если вызов list::empty()100% времени неправильный. Я только хочу , чтобы избежать сбоя или нарушений...

9
Правильна ли эта реализация C ++ AtomicInt?

Предпосылка: я работаю со встроенной (почти голой) средой ARM, где у меня даже нет C ++ 11 (с std::atomic<int>), поэтому избегайте ответов типа « просто используйте стандартный C ++std::atomic<int> »: я не могу . Является ли эта ARM- реализация AtomicInt правильной? (предположим, что...

9
Как вызвать методы двигателя флаттера из другого потока

Я использую настольный компьютер для Linux. Я MarkTextureFrameAvailableвызываю метод, который должен пометить текстуру, которая должна быть обработана движком. Поскольку я программирую видеоплеер, мне нужно позвонить MarkTextureFrameAvailableиз ветки плеера. Проблема в том, что двигатель заставляет...