Size: a a a

2020 September 23

OZ

Olzhas Zhumabek in pro.cxx
SG15 вроде
источник

VF

Vlad Faust in pro.cxx
Подскажите, как можно удобно получить возвращаемый тип текущей функции в С++20? Что-то типа  std::invoke_result<__func__, ?>
источник

АК

Александр Караев... in pro.cxx
Vlad Faust
Подскажите, как можно удобно получить возвращаемый тип текущей функции в С++20? Что-то типа  std::invoke_result<__func__, ?>
никак
источник

АК

Александр Караев... in pro.cxx
Vlad Faust
Подскажите, как можно удобно получить возвращаемый тип текущей функции в С++20? Что-то типа  std::invoke_result<__func__, ?>
зачем?
источник

A

Alex in pro.cxx
наверное, для макроса какого-то
источник

АР

Андрей Руссков... in pro.cxx
поди чтобы писать код а-ля
T foo() {
 SUPER_COOL_MACRO_FOR_RETURN_TYPE ret;
 // ...
 retun ret;
}
источник

VF

Vlad Faust in pro.cxx
Да, там сложный кейс. Ну ладно, другим путём пойду =)
источник

AT

Anatoly Tomilov in pro.cxx
Андрей Руссков
поди чтобы писать код а-ля
T foo() {
 SUPER_COOL_MACRO_FOR_RETURN_TYPE ret;
 // ...
 retun ret;
}
Это делается через templated conversion operator
источник

АР

Андрей Руссков... in pro.cxx
не делается, если ты хочешь использовать переменную по типу T
источник

AT

Anatoly Tomilov in pro.cxx
Не понял
источник

AT

Anatoly Tomilov in pro.cxx
Тело функции просто переносится в тело оператора, класс с оператором возвращается. Класс имеет данное-член -- ссылку на *this
источник

VF

Vlad Faust in pro.cxx
Utils::generator<std::variant<
   Token::MagicLiteral,
   Token::Data,
   Token::Punctuation,
   Token::Codepoint>>
Lexer::_lex_char_container() {
 using Ret = std::variant<
     Token::MagicLiteral,
     Token::Data,
     Token::Punctuation,
     Token::Codepoint>;
 YIELD_ALL(_lex_heredoc(), Ret);
}


Вот для этого участка хотелось бы избавиться от Ret и заменить на что-то автоматическое
источник

АК

Александр Караев... in pro.cxx
Vlad Faust
Utils::generator<std::variant<
   Token::MagicLiteral,
   Token::Data,
   Token::Punctuation,
   Token::Codepoint>>
Lexer::_lex_char_container() {
 using Ret = std::variant<
     Token::MagicLiteral,
     Token::Data,
     Token::Punctuation,
     Token::Codepoint>;
 YIELD_ALL(_lex_heredoc(), Ret);
}


Вот для этого участка хотелось бы избавиться от Ret и заменить на что-то автоматическое
для этого существуют using'и
источник

VF

Vlad Faust in pro.cxx
Неудобно для каждой функции делать using извне, нарушается инкапсуляция
источник

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 = std::variant<
     Token::MagicLiteral,
     Token::Data,
     Token::Punctuation,
     Token::Codepoint>;
 YIELD_ALL(_lex_heredoc(), Ret);
}


Вот для этого участка хотелось бы избавиться от Ret и заменить на что-то автоматическое
Может быть лучше избавиться от возвращаемого типа, заменив на auto, если это не декларация
источник

VF

Vlad Faust in pro.cxx
Да это нетривиально, ещё и вытаскивать вариант из return тайпа придётся. Проще оставить как есть =)
источник

VF

Vlad Faust in pro.cxx
Anatoly Tomilov
Может быть лучше избавиться от возвращаемого типа, заменив на auto, если это не декларация
Не-а, это в том числе документация =)
источник

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 = std::variant<
     Token::MagicLiteral,
     Token::Data,
     Token::Punctuation,
     Token::Codepoint>;
 YIELD_ALL(_lex_heredoc(), Ret);
}


Вот для этого участка хотелось бы избавиться от Ret и заменить на что-то автоматическое
tempalte <typename Ret = std::variant<Token::MagicLiteral, Token::Data, Token::Punctuation, Token::Codepoint>>
Utils::generator<Ret> Lexer::_lex_char_container() {
 YIELD_ALL(_lex_heredoc(), Ret);
}
источник

VF

Vlad Faust in pro.cxx
Переслано от Vlad Faust
Неудобно для каждой функции делать using извне, нарушается инкапсуляция
источник

VF

Vlad Faust in pro.cxx
А, понял
источник