Вопросы по теме 'c++17'

Как создать каталог в С++
я только что нашел небольшой фрагмент кода, который позволяет мне создать каталог с Windows API без использования system(). Единственная проблема в том, что я не могу создать каталог в подкаталоге. Например #include<windows.h> int...
52664 просмотров
schedule 18.08.2022

Что такое краткие циклы for на основе диапазона?
clang начал внедрять краткие циклы for на основе диапазона из n3994 . Часто при введении циклов for на основе диапазона мы видим код в форме for (auto & v : vector) , чтобы избежать ненужного копирования. Кажется, что n3994 предполагает, что...
2194 просмотров
schedule 19.04.2023

необязательный конструктор с initializer_list
Какова цель этого специального конструктора, принимающего список инициализаторов. Может ли кто-нибудь привести пример, когда это будет полезно? template <class U, class... Args> constexpr explicit optional(in_place_t,...
1704 просмотров
schedule 05.06.2023

Написание современного функционального интерфейса для создания заполненного контейнера
Когда я освоился в C++03, я изучил несколько подходов к написанию функции «дайте мне набор вещей». Но у каждого есть неудачи. template< typename Container > void make_collection( std::insert_iterator<Container> ); Это должно...
386 просмотров
schedule 18.06.2022

С++ 14 с использованием псевдонима для is_same::value
В этом вопросе используется is_same<uint64_t, decltype(val)>::value . Я ожидал, что будет С++ 14 using alias : is_same_v , похожий на вспомогательные типы: conditional_t , enable_if_t и tuple_element_t , которые я использую в моем...
3190 просмотров
schedule 06.07.2023

Класс шаблона с недопустимыми функциями-членами
Законно ли в C++ создавать экземпляры шаблонов классов с классами, которые не работают с некоторыми из его функций-членов? Например: class A { public: void f() { } }; class B { }; template<typename T> class Wrapper { private:...
221 просмотров
schedule 23.09.2022

Будет ли стандартизирована идиоматическая защита/выход из области видимости?
Запуск лямбды при выходе из области видимости кажется такой простой вещью, что я ожидаю, что она будет стандартизирована. Такие вещи, как unique_ptr , лучше, когда они применимы, но я обнаружил, что существует бесконечный запас «одноразовых»...
3005 просмотров
schedule 02.06.2023

Реализация оператора less для массивов с использованием выражений свертки
Я играю с выражением fold в С++ 17 с последним clang++. Я попытался реализовать оператор меньшего размера для массива, используя это, которое я хочу использовать для строк фиксированного размера. Вот куда я попал. Есть ли лучший способ сделать...
609 просмотров
schedule 03.02.2023

Поиск минимального элемента на основе преобразованного значения
Вот такая задача пришла мне из code review. Я хочу выбрать минимальное значение из набора на основе специального предиката сравнения. Как это: struct Complex { ... }; float calcReduction(Complex elem); Complex findMinValueWithPredicates(const...
2305 просмотров
schedule 21.05.2023

Почему вспомогательный помощник для идиомы «стереть-удалить» не предусмотрен стандартом?
Для удаления элементов из коллекции в STL требуется так часто используемый метод, что он стал идиомой: идиома стереть-удалить Одним из наиболее распространенных применений этой идиомы является удаление элемента типа T из vector<T>...
697 просмотров
schedule 26.03.2023

конструктор производного класса не может быть constexpr, если базовый класс содержит член массива
Я хочу определить значения constexpr производного типа (SBar), используя конструктор, единственным аргументом которого является переменная базового класса (SFoo), которая просто используется для инициализации базы. Это прекрасно работает, когда...
512 просмотров
schedule 02.02.2023

Допускаются ли в определениях понятий ошибки замены за пределами требуемого выражения?
Рассмотрим этот код: #include <type_traits> #include <iostream> template <class T> concept bool C1 = std::is_same<T, int>::value; template <class T> concept bool C2 =...
156 просмотров
schedule 11.04.2023

Есть ли короткий способ проверить, не содержит ли пакет параметров повторение типов?
Скажем, у меня есть структура шаблона: template<typename... Args> struct Foo { static_assert(/*code*/); //to do } Я хочу проверить в static_assert, являются ли типы в Args разными типами. Я знаю, как это сделать, используя...
70 просмотров
schedule 28.05.2022

Почему аргумент ссылки rvalue соответствует ссылке const в разрешении перегрузки?
Потенциально связанные статьи: Разрешение перегрузки между объектом, ссылкой rvalue, ссылкой const std::begin и R-значения Предполагается, что для контейнера STL C , std::begin(C) и аналогичные функции доступа, включая std::data(C)...
728 просмотров

Понятия и порядок декларирования
Я экспериментировал с облегченными концепциями в GCC из SVN. Я столкнулся с проблемой, которая, как я подозреваю, связана с моим непониманием, и я был бы признателен, если бы кто-нибудь мог указать мне правильное направление. Мой код: #include...
324 просмотров
schedule 28.06.2023

Как предложение C ++ 17 по унифицированному синтаксису вызовов предназначено для обработки пространств имен?
Насколько мне известно, есть два пропсала для унифицированного синтаксиса вызовов для C ++ 17 (где второй называется синтаксисом унифицированного вызова). Читая их, я не понимаю, как они собираются обрабатывать пространства имен. Пример:...
2762 просмотров
schedule 23.01.2024

Проблема синтаксиса при заполнении массива выражением сгиба
Да, я могу использовать std::initializer_list . Да, еще проще, я могу сделать агрегатную инициализацию. Но как это работает? Кажется, я не могу сложить голову вокруг выражений сгиба С++ 17. Там не хватает примеров. Вот что я придумал:...
1886 просмотров
schedule 05.09.2022

Встроенное использование явного конструктора не по умолчанию для объекта-члена
В С++ 11 (или будущем) есть какая-то простая вариация следующего, которая является законной? class A { public: std::vector<char> b(123); // declare a vector with 123 elements }; Самое близкое, что я могу найти, немного неуклюже...
184 просмотров
schedule 18.12.2023

Как определить, не связаны ли два побочных эффекта с заданием?
Из §5.2.6 / 1 у нас есть (выделено мной) : Значение постфиксного выражения ++ - это значение его операнда. [Примечание: полученное значение является копией исходного значения - конечное примечание] Операнд должен быть изменяемым lvalue....
292 просмотров

Ассоциативность fold-выражений
N4191 предложил свернуть выражения на C++. Определение там было такое (args + ...) является левой складкой (т.е. (((a0 + a1) + a2) + ...) , и что (... + args) является правой стороной (т. е. (... + (a8 + (a9 + a10))) . Однако...
314 просмотров