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

вспомогательная конструкция make_XYZ, разрешающая RVO и вывод типа, даже если XZY не имеет ограничения на копирование
ОБНОВЛЕНИЕ 1. В C ++ 17 добавлен вывод типов для конструкторов, что не означает, что бесплатная функция является второстепенным решением. ОБНОВЛЕНИЕ 2: C ++ 17 добавил гарантированное исключение копии (копирование даже не происходит...
754 просмотров

Что такое string_view?
string_view была предложена в рамках технического обслуживания по основам библиотеки C++( N3921 ) добавлен в C++17 Насколько я понимаю, это тип, который представляет собой некую строковую «концепцию», которая представляет собой представление...
63184 просмотров
schedule 26.06.2022

Почему компилятор разрешает доступ к массиву за пределами границ даже с индексом constexpr?
Например, если у нас есть std::array , и мы создаем экземпляр элемента, который выходит за границы, используя constexpr , компилятор не сообщит об ошибке: constexpr int EvaluateSpecialArrayIndex(int a) { return a * sizeof(int); } array<int,...
2063 просмотров
schedule 17.02.2023

С++ 1z, почему бы не удалить орграфы вместе с триграфами?
C++1z удалит триграфы. IBM резко выступила против этого ( здесь и здесь ), поэтому, похоже, есть аргументы в пользу обеих сторон удаления/не удаления. Но раз принято решение убрать триграфы, то зачем оставлять орграфы? Я не вижу никаких причин...
2904 просмотров
schedule 09.09.2023

Возвращаемое значение нечленной перегрузки std::empty для массивов фиксированного размера
Документ [принятых] стандартов N4280 добавляет несколько новые функции, не являющиеся членами, будут включены в C++17. Есть замечания, указывающие на правильные возвращаемые значения для каждой из новых функций, не являющихся членами, и, в...
75 просмотров
schedule 07.05.2022

Какие библиотеки boost обсуждаются для включения в C++17?
Для типичных потребностей программирования C++11 стал важной вехой — мы заменили 95% кода Boost стандартной библиотекой. Но каково текущее состояние его библиотек , которые еще не включены в стандартную библиотеку? Я начал задаваться вопросом...
3037 просмотров
schedule 03.11.2022

Clang и бинарные выражения — проклятие пустого пакета параметров
В частности, Clang 3.6.0, который в настоящее время размещается на Coliru. Все эти фрагменты вызываются из: int main() { foo(); std::cout << "\n----\n"; foo(1, 2, 3); } Следующий код: template <class... Args>...
1347 просмотров

Является ли auto необязательным ключевым словом в диапазоне циклов for?
Я помню, как кто-то однажды сказал мне, «нет необходимости в auto внутри циклов for на основе диапазона. Это не было бы двусмысленным в языке, если бы мы удалили его». Верно ли это утверждение? Является ли следующий код допустимым...
862 просмотров
schedule 10.11.2022

замена std::binary_function
std::binary_function теперь устарела и будет удалена в c++17 . Я искал в разных публикациях, но не смог найти точного способа заменить его. Я хотел бы знать, как написать следующий код в c++11 . template <class T> inline T...
8063 просмотров
schedule 07.04.2024

Как я могу сделать код этого вариативного шаблона короче, используя возможности C++14 и C++1z?
Это фрагмент кода, который я собираюсь использовать, чтобы проверить, уникальны ли типы вариативных шаблонов: template <typename...> struct is_one_of; template <typename F> struct is_one_of<F> { static constexpr bool value =...
483 просмотров

msvc std::function не принимает общую лямбду с вложенной лямбдой
Следующее работает с gcc 5.2 и clang 3.7, но не работает с msvc 2015: #include <functional> int main() { auto const foo = [](auto&& i) { auto const bar = []{ return 100; }; return bar(); };...
401 просмотров
schedule 06.08.2023

Почему перегрузка const&& as_const удалена?
В блоге о прогрессе C++17 я прочитал следующее: P0007 предлагает шаблон вспомогательной функции as_const , который просто берет ссылку и возвращает ее как ссылку на const . template <typename T> std::add_const_t<T>&...
589 просмотров
schedule 24.06.2022

Почему для концепции Sortable требуется полностью упорядоченный тип значения, а для std::sort требуется только меньше, чем сопоставимый?
В последнем документе о концепциях N3701 , есть следующий пример с алгоритмом sort : template<typename Cont> requires Sortable<Cont>() void sort(Cont& cont) где понятие Sortable определяется как...
1089 просмотров
schedule 20.01.2023

Работа с unique_ptr‹int[]›, vector‹int› и int[] в шаблонной функции
Скажем, у меня есть 3 переменные: vector<int> vec(3); int stat[3]; auto dyn = make_unique<int[]>(3); Я могу инициализировать любой из них, если я знаю, что размер равен 3: for(auto i = 0; i < 3; ++i) X[3] = i; Где X...
59 просмотров
schedule 28.10.2023

эффективный способ вставить unique_ptr в карту без удаления указателя, если ключ уже существует
Легкий путь очевиден std::map<int,std::unique_ptr<something>> mymap; auto f = mymap.find(5); std::unique_ptr<something> myptr; if (f == mymap.end()) mymap.insert({5, std::move(myptr)}); Однако это выглядит не слишком...
4766 просмотров
schedule 30.08.2023

С++ 17 make_Optional constexpr-ness
На этой странице говорится, что функция make_optional в C++17 возвращает constexpr optional<...> . Я думаю (хотя могу ошибаться), для этого потребуется, чтобы optional<T> имел constexpr конструктор копирования или перемещения....
485 просмотров
schedule 16.03.2024

Могу ли я использовать функции доступа библиотек итераторов к нестандартным контейнерам?
В библиотеке iterator было представлено множество функций доступа по ходу C+. +11, С++ 14 и С++ 17: begin / end cbegin / cend crbegin / crend data empty rbegin / rend size Могу ли я использовать их в любом...
56 просмотров
schedule 13.07.2023

Используя файловую систему :: путь, как вы открываете файл кросс-платформенным способом?
Допустим, вы использовали новый код std::filesystem (или std::experimental::filesystem ) для поиска файла. У вас есть переменная path , содержащая полный путь к этой переменной. Как открыть этот файл? Это может звучать глупо, но примите во...
10397 просмотров
schedule 24.01.2024

преобразование структуры в/из std::tuple
Предполагая, что у меня есть struct и std::tuple с макетом одного типа: struct MyStruct { int i; bool b; double d; } using MyTuple = std::tuple<int,bool,double>; Есть ли какой-нибудь стандартный способ приведения одного к другому?...
8044 просмотров
schedule 16.12.2022

Могу ли я инициализировать массив, используя std::initializer_list вместо инициализатора, заключенного в фигурные скобки?
Могу ли я инициализировать массив, используя объект std::initializer_list вместо инициализатора, заключенного в фигурные скобки? Как известно, мы можем сделать это: http://en.cppreference.com/w/cpp/language/aggregate_initialization unsigned...
3742 просмотров
schedule 13.08.2022