Показать сообщение отдельно

  #12  
Старый 03.10.2023, 09:00
Ya Zaregalsya
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами: 4714653

Репутация: 98
По умолчанию

Цитата:
Сообщение от kin4stat  

Держи, читай

C++:





Код:
template

inline
constexpr
bool
apply_is_noexcept
=
false
;
template

inline
constexpr
bool
apply_is_noexcept
>
=
noexcept
(
std
::
invoke
(
std
::
declval

(
)
,
std
::
get
>
-
Is
-
1
>
(
std
::
declval

(
)
)
.
.
.
)
)
;
template

constexpr
decltype
(
auto
)
apply_reversed
(
F
&&
f
,
Tuple
&&
tup
)
noexcept
(
apply_is_noexcept
>
>>
)
{
return
[
&
]

(
std
::
index_sequence

)
{
return
std
::
invoke
(
std
::
forward

(
f
)
,
std
::
get
>
-
Is
-
1
>
(
std
::
forward

(
tup
)
)
.
.
.
)
;
}
(
std
::
make_index_sequence
>
>
{
}
)
;
}

Учитывая, что это функционал для метапрограммирования, то он ещё вполне читабельный. Кроме шуток, открой код любого новичка в Lua, прикинь как это выглядело бы в C++, и обнаружишь, что при переносе на плюсы он по прежнему останется простым. А с использованием возможностей языка, его наоборот можно сделать ещё понятнее. Писать на С++ понятным читабельным образом или писать на С++ как чорт это личный выбор каждого.
 
Ответить с цитированием