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

1007
Каковы новые функции в C ++ 17?

Locked . Этот вопрос и его ответы заблокированы, потому что вопрос не по теме, но имеет историческое значение. В настоящее время он не принимает новые ответы или взаимодействия. C ++ 17 теперь полностью готов, поэтому вряд ли он претерпит большие изменения. Сотни предложений были выдвинуты для C...

543
Правила аннулирования итераторов

Каковы правила аннулирования итераторов для контейнеров C ++? Желательно в формате сводного списка. (Примечание. Предполагается, что это будет вход в FAQ по C ++ в Stack Overflow . Если вы хотите критиковать идею предоставления FAQ в этой форме, то публикация в meta, с которой все это началось,...

242
Какова цель std :: launder?

P0137 представляет шаблон функции std::launderи вносит множество изменений в стандарт в разделах, касающихся объединений, времени жизни и указателей. Какую проблему решает эта статья? Какие изменения в языке я должен знать? И что мы думаем...

221
Как именно std :: string_view быстрее, чем const std :: string &?

std::string_viewсделал это в C ++ 17 и широко рекомендуется использовать его вместо const std::string&. Одна из причин - производительность. Может кто-нибудь объяснить, как именно std::string_view / будет быстрее, чем const std::string&при использовании в качестве типа параметра? (давайте...

186
Что заставило меня = i ++ + 1; законно в C ++ 17?

Прежде чем вы начнете кричать неопределенное поведение, это явно указано в N4659 (C ++ 17) i = i++ + 1; // the value of i is incremented Еще в N3337 (C ++ 11) i = i++ + 1; // the behavior is undefined Что изменилось? Из того, что я могу собрать, из [N4659 basic.exec] За исключением отмеченных...

170
С ++ 11, 14, 17 или 20 вводит стандартную константу для пи?

Существует довольно глупая проблема с числом пи в C и C ++. Насколько я знаю, M_PIопределено в math.hне требуется ни одного стандарта. Новые стандарты C ++ ввел много сложных математических в стандартной библиотеке - гиперболических функций, std::hermiteи std::cyl_bessel_i, различных генераторов...

162
Что такое string_view?

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

143
std :: lock_guard или std :: scoped_lock?

C ++ 17 ввел новый класс блокировки под названием std::scoped_lock. Судя по документации, он похож на уже существующий std::lock_guardкласс. Какая разница и когда я должен его...

124
Как работают встроенные переменные?

На собрании стандартов ISO C ++ в Оулу в 2016 году комитет по стандартам проголосовал за предложение под названием « Встроенные переменные» в C ++ 17. Говоря простым языком, что такое встроенные переменные, как они работают и для чего они полезны? Как следует объявлять, определять и использовать...

123
polymorphic_allocator: когда и зачем мне его использовать?

Вот документация по cppreference , вот рабочий проект. Должен признать, что я не понимал, какова настоящая цель polymorphic_allocatorи когда / почему / как я должен его использовать. Например, pmr::vectorподпись имеет следующую подпись: namespace pmr { template <class T> using vector =...

98
экспериментальная :: ошибка компоновщика файловой системы

Я пытаюсь использовать новые функции C ++ 1z, фактически, в рамках разработки в рамках gcc 6.0. Если я попробую этот небольшой пример: #include <iostream> #include <experimental/filesystem> namespace fs = std::experimental::filesystem; int main() { fs::path p1 = "/home/pete/checkit";...

97
Как получить размер файла в байтах с помощью C ++ 17

Есть ли подводные камни для конкретных операционных систем, о которых я должен знать? Есть много дубликатов ( 1 , 2 , 3 , 4 , 5 ) этого вопроса, но ответы на них были даны несколько десятилетий назад. Сегодняшние ответы на многие из этих вопросов неверны. Методы из других (старых QA) на .sx stat.h...

96
Зачем использовать std :: make_unique в C ++ 17?

Насколько я понимаю, C ++ 14 был введен, std::make_uniqueпотому что из-за того, что порядок оценки параметров не был указан, это было небезопасно: f(std::unique_ptr<MyClass>(new MyClass(param)), g()); // Syntax A (Объяснение: если оценка сначала выделяет память для необработанного указателя,...

92
Когда в C ++ информация о типах передается в обратном направлении?

Я только что наблюдал, как Стефан Т. Лававедж выступал CppCon 2018на « Выведении аргументов из шаблона класса», где в какой-то момент он, между прочим, сказал: В типе C ++ информация почти никогда не течет в обратном направлении ... Мне пришлось сказать «почти», потому что есть один или два...

89
Как работает гарантированное копирование?

На собрании стандартов ISO C ++ в Оулу в 2016 году комитет по стандартам проголосовал за предложение под названием « Гарантированное исключение копий с помощью упрощенных категорий значений» . Как именно работает гарантированное копирование? Охватывает ли он некоторые случаи, когда исключение...