Size: a a a

2020 September 23

VF

Vlad Faust in pro.cxx
Имеет смысл!
источник

VF

Vlad Faust in pro.cxx
Ну всё равно костыль. Это нужно и в декларации, и в дефиниции этот огромный темплейт делать. Плюс нет защиты от случайного использования другого темплейт-аргумента
источник

N

Neargye in pro.cxx
Vlad Faust
Ну всё равно костыль. Это нужно и в декларации, и в дефиниции этот огромный темплейт делать. Плюс нет защиты от случайного использования другого темплейт-аргумента
Ну да, к сожалению хорошего решения нет
источник

VF

Vlad Faust in pro.cxx
Есть:

Utils::generator<std::variant<
   Token::MagicLiteral,
   Token::Data,
   Token::Punctuation,
   Token::Codepoint>>
Lexer::_lex_char_container() {
 using _Ret = decltype(_lex_char_container().current());

 YIELD_ALL(_lex_heredoc(), _Ret);

🙂
источник

VF

Vlad Faust in pro.cxx
Не текущая функция, но пойдёт
источник

N

Neargye in pro.cxx
Vlad Faust
Есть:

Utils::generator<std::variant<
   Token::MagicLiteral,
   Token::Data,
   Token::Punctuation,
   Token::Codepoint>>
Lexer::_lex_char_container() {
 using _Ret = decltype(_lex_char_container().current());

 YIELD_ALL(_lex_heredoc(), _Ret);

🙂
Ну оно может что отвалиться при рефакторинге, и зависит от текущей кодовой базы
источник

A

Alex Ф-ф-фэils!🌠︙... in pro.cxx
Александр Караев
void_t какой-нибудь
++
источник

VF

Vlad Faust in pro.cxx
Neargye
Ну оно может что отвалиться при рефакторинге, и зависит от текущей кодовой базы
Согласен =(
источник

A

Alex Ф-ф-фэils!🌠︙... in pro.cxx
@Neargye твой вчерашний вариант с is_invocable не работает из-за hard error, но если его приправить свинкой, то он позволяет ещё и тип функции-члена проверять
источник

N

Neargye in pro.cxx
Alex Ф-ф-фэils!🌠︙
@Neargye твой вчерашний вариант с is_invocable не работает из-за hard error, но если его приправить свинкой, то он позволяет ещё и тип функции-члена проверять
Да, я чуть улучшил вариант вот тут https://t.me/ProCxx/406353
источник

AT

Anatoly Tomilov in pro.cxx
Vlad Faust
Есть:

Utils::generator<std::variant<
   Token::MagicLiteral,
   Token::Data,
   Token::Punctuation,
   Token::Codepoint>>
Lexer::_lex_char_container() {
 using _Ret = decltype(_lex_char_container().current());

 YIELD_ALL(_lex_heredoc(), _Ret);

🙂
источник

A

Alex Ф-ф-фэils!🌠︙... in pro.cxx
👍
источник

VF

Vlad Faust in pro.cxx
Какая жуть! Там рантайм ведь, да?
источник

AT

Anatoly Tomilov in pro.cxx
что? Нет. Всё статично
источник

AT

Anatoly Tomilov in pro.cxx
тело функции переносится в AtResult. Вместо прямого доступа до данных-членов (i к примеру) — доступ через lexer. (lexer.i к примеру)
источник

m

magras in pro.cxx
Anatoly Tomilov
что? Нет. Всё статично
Кажется это помешает RVO.
источник

AT

Anatoly Tomilov in pro.cxx
в котором месте?
источник

VF

Vlad Faust in pro.cxx
Так, хорошо. Спасибо вам за эффорт, но по мне это плохой баланс между читаемостью и рефакторинг-абилити
источник

VF

Vlad Faust in pro.cxx
Слишком магия
источник

AT

Anatoly Tomilov in pro.cxx
magras
Кажется это помешает RVO.
return из оператора сразу в return метода _lex_char_container происходит
источник