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

С++ 17 - это название стандарта С++, утвержденного в 2017 году. Он основывается на предыдущем стандарте С++ 14, улучшении основного языка и стандартной библиотеки и добавлении нескольких новых языковых функций.
1

Каковы новые возможности в С++ 17?

С++ 17 теперь полностью завершена, поэтому вряд ли произойдут большие изменения. Сотни предложений были выдвинуты для С++ 17. Какая из этих функций была добавлена ​​в С++ в С++ 17? При использовании компилятора С++, который поддерживает "С++ 1z", к...
27 июн. '16 в 18:06
6

Что такое Агрегаты и POD и как/почему они являются особенными?

Этот FAQ относится к агрегатам и POD и охватывает следующий материал: Что такое Агрегаты? Что такое POD (Обычные старые данные)? Как они связаны? Как и почему они особенные? Какие изменения для С++ 11?
14 нояб. '10 в 15:35
29

перечисление в строку в современном С++ 11/С++ 14/С++ 17 и будущем С++ 20

Вопреки всем другим подобным вопросам, этот вопрос касается использования новых функций C++. 2008 c Есть ли простой способ преобразовать перечисление C++ в строку? 2008 c Простой способ использовать переменные перечислимых типов в виде строки в C?...
03 мар. '15 в 10:05
1

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

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

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

std::string_view сделал это на С++ 17, и рекомендуется использовать его вместо const std::string&. Одной из причин является производительность. Может кто-нибудь объяснить, насколько точно std::string_view будет/будет быстрее, чем const std:...
19 окт. '16 в 9:55
6

Имеет ли С++ 11, 14, 17 или 20 стандартную константу для pi?

Существует довольно глупая проблема с числом pi в C и C++. Насколько я знаю, M_PI определенный в math.h, не требуется никаким стандартом. Новые C++ стандарты внесли в стандартную библиотеку множество сложной математики - гиперболические функции, st...
11 апр. '18 в 14:49
11

Самый элегантный способ написать однократное "если"

Начиная с C++ 17, можно написать блок if который будет выполнен ровно один раз, например так: #include <iostream> int main() { for (unsigned i = 0; i < 10; ++i) { if (static bool do_once = true; do_once) { // Enter only once ...
24 июн. '19 в 14:08
6

Лямбда возвращается: это законно?

Рассмотрите эту довольно бесполезную программу: #include <iostream> int main(int argc, char* argv[]) { int a = 5; auto it = [&](auto self) { return [&](auto b) { std::cout << (a + b) << std::endl; ...
05 сент. '18 в 19:42
3

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

На собрании стандартов Oulu ISO С++ 2016 года предложение по стандарту Inline Variables было проголосовано в С++ 17 комитетом по стандартам. В условиях неспециалиста, что такое встроенные переменные, как они работают и для чего они полезны? Как объя...
26 июн. '16 в 21:39
3

Когда информация о типе возвращается в C++?

Я только что видел, как Стефан Т. Лававей выступил на CppCon 2018 аргумента шаблона класса", где в какой-то момент он случайно сказал: В C++ информация о типах почти никогда не течет в обратном направлении... Я должен был сказать "почти", потому ч...
12 нояб. '18 в 21:16
3

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

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

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

Есть ли подводные камни для конкретных операционных систем, о которых я должен знать? Есть много дубликатов (1, 2, 3, 4, 5) этого вопроса, но они были даны ответы десятилетия назад. Очень многие проголосовавшие ответы на многие из этих вопросов сег...
30 июн. '19 в 20:33
3

Является ли указатель с правильным адресом и типом все еще всегда действительным указателем с С++ 17?

(В отношении этот вопрос и ответ.) До стандарта С++ 17 следующее предложение было включено в [basic.compound]/3: Если объект типа T расположен по адресу A, указатель типа cv T *, значение которого является адресом A, называется указывать на этот...
02 янв. '18 в 14:00
4

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

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

Разрешено ли компилятору оптимизировать локальную изменчивую переменную?

Разрешено ли компилятору оптимизировать это (согласно стандарту С++ 17): int fn() { volatile int x = 0; return x; } к этому? int fn() { return 0; } Если да, то почему? Если нет, почему бы и нет? Здесь некоторые думают об этом предме...
23 июл. '18 в 6:01