170 похожих чатов

11 ответов

16 просмотров

нет, оно будет работать как обычный auto&& за исключением одного нюанса в выводе типов - если справа T&& то в результате будет T

Чаво

вообще имо фигня, было б круто иметь дедакт гайды для алиасов и делать remove_rvalue_reference_t x = foo();

feedable
вообще имо фигня, было б круто иметь дедакт гайды ...

это решило* бы проблемы с айгеном, где auto не конвертит експрешшн темплейт в значение

feedable
вообще имо фигня, было б круто иметь дедакт гайды ...

Но не соглашусь что этот частный случай фигня потому что это давняя и фундаментальная проблема которая тянется с самого первого С++98 стандарта. Попробуй найти в этом примере UB #include <cstring> const char* max(const char* a, const char* b) { return std::strcmp(b, a) < 0 ? a : b; } template <typename T> const T& max(const T& a, const T& b, const T& c) { return max(max(a, b), c); } int main() { const char* s1 = "frederic"; const char* s2 = "anica"; const char* s3 = "lucas"; auto m2 = max(s1, s2, s3); } И эту проблему могли бы решить еще в С++11 стандарте (вместе с добавлением rvalue-ссылок) но почему-то не захотели.

Богдан
Но не соглашусь что этот частный случай фигня пото...

ну он фигня потому что он не решает много случаев

feedable
ну он фигня потому что он не решает много случаев

те же експиешшн темплейты точно так же не работают как и не работали

feedable
те же експиешшн темплейты точно так же не работают...

expression templates паттерн? а что за проблема там?

Богдан
expression templates паттерн? а что за проблема та...

auto x = a+make_bar()*b; //попытка использовать x будет всегда провальна тк резкльтат make_bar будет уже удален

feedable
auto x = a+make_bar()*b; //попытка использовать x ...

все потому что x имеет тип експрешшн темплейт, а не результат вычисления експрешшн темплейта

Богдан
Но не соглашусь что этот частный случай фигня пото...

А тут разве не будет warning про возврат ссылки на локальную переменную?

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
1
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Карта сайта