DP
Size: a a a
DP
/¯
P
expression statement
на русский, чтобы было понятно что это за зверьMS
expression statement
на русский, чтобы было понятно что это за зверьAS
expression statement
на русский, чтобы было понятно что это за зверьAS
MS
MS
P
expression
с ;
(причём может быть просто ;
, без выражения)statement
обычно переводят как инструкция (в контексте C++), так что expression-statement
по-русски будет что-то вроде выражение-инструкция
или инструкция-выражение
AS
expression
с ;
(причём может быть просто ;
, без выражения)statement
обычно переводят как инструкция (в контексте C++), так что expression-statement
по-русски будет что-то вроде выражение-инструкция
или инструкция-выражение
VS
AS
VS
AE
O
awaitable
— лишь одна из составляющих корутинexpected<>
, являющийся на самом деле специфической корутиной, здесь код на C++ очень сильно похож на do-нотацию из Haskellm
awaitable
— лишь одна из составляющих корутинexpected<>
, являющийся на самом деле специфической корутиной, здесь код на C++ очень сильно похож на do-нотацию из Haskellco_await 42;
будет собираться и работать). Соответственно корутина реализующая future может быть одновременно и корутиной и awaitable. Но, например, для generator'а, который тоже является корутиной, я бы не стал реализовывать поддержку co_await. Поэтому я бы все же разделял эти понятия.O
co_await 42;
будет собираться и работать). Соответственно корутина реализующая future может быть одновременно и корутиной и awaitable. Но, например, для generator'а, который тоже является корутиной, я бы не стал реализовывать поддержку co_await. Поэтому я бы все же разделял эти понятия.promise
, так что, согласен с тем, что монадой является awaitable
, правда не уверен, можем ли мы отнести к монадам и сам promise
, или нетA
template <int First, int Last, typename Functor>Когда-то здесь обсуждали, что это эффективнее реализуется на fold expression, но я не видел реализации, и сейчас тоже не могу её найти. Не подскажете?
constexpr void constexpr_for([[maybe_unused]] Functor&& f) noexcept
{
if constexpr (First < Last)
{
f(value_as_type<First>{});
constexpr_for<First + 1, Last, Functor>(std::forward<Functor>(f));
}
}
m