
03.10.2023, 09:00
|
|
Постоянный
Регистрация: 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++, и обнаружишь, что при переносе на плюсы он по прежнему останется простым. А с использованием возможностей языка, его наоборот можно сделать ещё понятнее. Писать на С++ понятным читабельным образом или писать на С++ как чорт это личный выбор каждого.
|
|
|