LINUX.ORG.RU

Вести с полей стандартизации C++: C++20 design is complete (Kona, 2019-02)

 


4

4

На Reddit-е появился большой пост с описанием того, что вошло в C++20 в результате очередного заседания комитета. На этой встрече в С++20 включили:

Modules!

Coroutines!

static, thread_local, and lambda capture for structured bindings.

std::polymorphic_allocator<>.

std::midpoint and std::lerp.

std::execution::unseq execution policy.

std::ssize() free function that returns a signed size.

std::span usability enhancements.

Precalculated hash values in lookup.

На следующей встрече в июне 2019-го будут рассматриваться к включению в C++20 следующие предложения (принципиально они уже одобрены, но до сих пор не были включены из-за незавершености формальных спецификаций):

Expansion statements.

The C++20 synchronization library.

std::format.

constexpr std::vector.

Allow constexpr allocation, but disallow allocations that are not deleted at compile time.

constexpr std::type_info::operator==.

New conceptification of iterators.

Monadic operations for std::optional.

std::source_location.

std::flatmap.

std::flatset.

std::ostream_joiner.

Stack trace library.

std::byteswap.

constinit.

Deprecating some uses of volatile.

Implicit creation of objects for low-level object manipulation.

using enum.

Ну и до кучи указывается, что еще было добавлено в C++20 ранее:

Concepts.

Contracts.

Ranges.

operator<=>.

A lot more constexpr features: consteval functions, std::is_constant_evaluated, constexpr union, constexpr try and catch, constexpr dynamic_cast and typeid.

Feature test macros.

std::span.

Synchronized output.

std::atomic_ref.

За подробностями лучше сходить на Reddit, там много поясняющего текста. Так же можно почитать отчет Херба Саттера.

★★★★★

Последнее исправление: eao197 (всего исправлений: 1)
Ответ на: комментарий от eao197

dave> Да я тут вижу в треде, что разношерстные, начиная вечно регистрирующимися тетрархами и заканчивая какими-то непонятными «специалистами-самовыдвиженцами» по ФП.

eao197> Неадекватов (не в медицинском/социальном смысле) бояться

Диалог обиженных звезданутых. Минимум инфы по делу, максимум лички.
Полдня понадобилось, чтобы понять что нужны (пустые) таплы, реализованные в самом языке. И то, чисто случайном тыком в небо вытащил из груды белого шума намек таплы.

anonymous
()
Ответ на: комментарий от dave

Поэтому все взоры прогрессивной общественности сейчас обращены на Rust, а не на C++.

Такого перла я ещё не слышал. Мне казалось у С++ есть 100500 более серьезных проблем, чем невозможность передавать void.

RazrFalcon ★★★★★
()
Последнее исправление: RazrFalcon (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Скорее всего dave поведет речь об использовании в C++ динамических объектов ... /надеюсь понятно о чем речь/. И в этом случае даже если возвращается значение void, то можно понять что это за объект.

anonymous
()
Ответ на: комментарий от dave
  1. Можно пример использования? Чем оно лучше std::nullopt?
  2. Чем std::tuple<> не угодил?
RazrFalcon ★★★★★
()
Ответ на: комментарий от dave

Конечно, есть в rust. Пишется тоже как (), он же пустой tuple. Его можно передать как аргумент. А вот в F# называется уже unit. Да, тоже можно передать аргументом в функцию. А вот в scala небольшой бардак с этим.

Заведи себе тип Void

struct Void
{};
и передавай куда тебе надо.

anonymous
()
Ответ на: комментарий от WaterLine

Что за область, если не секрет?

Имитационное моделирование (англ. simulation). Дискретно-событийное моделирование (англ. discrete event simulation), моделирование сетей (англ. network simulation) и прочее.

dave ★★★★★
()
Ответ на: комментарий от WaterLine

Больше инженерная и академическая. В принципе, растишка тоже может подойти. Меня как-то удивило один раз. Обратился товарищ, попросив написать движок на Си или на Rust. Так что, почему бы и не растишка? Тут подумать надо и попробовать.

dave ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.