заменить return на -> ?
От: B0FEE664  
Дата: 07.10.20 11:51
Оценка: -5 :)
Можно ли в следующей версии стандарта разрешить вместо return statement использовать -> ?
Хотя бы в лямбдах...
А то слово какое-то длинное...
Чтобы вместо
[](auto& x){return 0 == x;}

писать:
[](auto& x){-> 0 == x;}


Что скажите?
И каждый день — без права на ошибку...
Re: заменить return на -> ?
От: koenjihyakkei Россия  
Дата: 07.10.20 12:13
Оценка:
Здравствуйте, B0FEE664, Вы писали:

Зачем полумеры, нужно как в Руби — последнее выражение есть возвращаемое значение:

[](auto& x){0 == x;}
Re: заменить return на -> ?
От: so5team https://stiffstream.com
Дата: 07.10.20 12:22
Оценка: 84 (2)
Здравствуйте, B0FEE664, Вы писали:

BFE>Что скажите?


Было предложение по добавлению в C++ т.н. abbreviated lambdas формата [](auto&& a, auto&& b) => a.id() < b.id(), но не взлетело пока. Подробнее здесь: Why were abbrev. lambdas rejected?
Re: заменить return на -> ?
От: LaptevVV Россия  
Дата: 07.10.20 13:10
Оценка:
BFE>Что скажите?
Не хорошо.
Стрелка — это доступ по указателю.
Надо другой значок.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: заменить return на -> ?
От: Мёртвый Даун Россия  
Дата: 07.10.20 13:19
Оценка: +1 :))
Здравствуйте, B0FEE664, Вы писали:

BFE>Что скажите?


Скажу что подобные тебе и испортили язык...
Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!
Re: заменить return на -> ?
От: cockRoach Австрия  
Дата: 07.10.20 13:24
Оценка:
BFE>Что скажите?
Что стрелка не нужна.
Нужно делать просто поледнее вьіражение или явньій return если несколько точек возврата.

А в реальности — нафиг не нужно.
Re[2]: заменить return на -> ?
От: B0FEE664  
Дата: 07.10.20 13:41
Оценка:
Здравствуйте, LaptevVV, Вы писали:

BFE>>Что скажите?

LVV>Не хорошо.
LVV>Стрелка — это доступ по указателю.
LVV>Надо другой значок.

Не только доступ по указателю, но и тип возвращаемого значения:
auto fun() -> int
{
  return 0;
}

auto fn = [](auto& x) -> bool {return 1 == x;};


Т.е. уже как бы return, но не совсем.
И каждый день — без права на ошибку...
Re[3]: заменить return на -> ?
От: LaptevVV Россия  
Дата: 07.10.20 13:43
Оценка:
BFE>Т.е. уже как бы return, но не совсем.
Это да. На мой взгляд лучше было бы использовать вместо стрелки двоеточие, как в паскале.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: заменить return на -> ?
От: B0FEE664  
Дата: 07.10.20 13:55
Оценка:
Здравствуйте, so5team, Вы писали:

BFE>>Что скажите?

S>Было предложение по добавлению в C++ т.н. abbreviated lambdas формата [](auto&& a, auto&& b) => a.id() < b.id(), но не взлетело пока. Подробнее здесь: Why were abbrev. lambdas rejected?

Непонятно зачем '=>' вместо '->'.
Да и возражения из статьи мне не понятны. Можно же написать auto x = a.id() < b.id(); и никаких особых неоднородностей не наблюдается: тип и значения x понятны. Почему с лямбдами должно быть по-другому?
И каждый день — без права на ошибку...
Отредактировано 07.10.2020 14:07 B0FEE664 . Предыдущая версия . Еще …
Отредактировано 07.10.2020 14:07 B0FEE664 . Предыдущая версия .
Re[2]: заменить return на -> ?
От: Muxa  
Дата: 07.10.20 14:04
Оценка: +1
K>Зачем полумеры, нужно как в Руби — последнее выражение есть возвращаемое значение:

K>
K>[](auto& x){0 == x;}
K>

это
[](auto& x) -> bool

или
[](auto& x) -> void

?
Re[4]: заменить return на -> ?
От: B0FEE664  
Дата: 07.10.20 14:06
Оценка:
Здравствуйте, LaptevVV, Вы писали:

BFE>>Т.е. уже как бы return, но не совсем.

LVV>Это да. На мой взгляд лучше было бы использовать вместо стрелки двоеточие, как в паскале.

Неее. Ну какой ещё "Паскаль"?! Да и неоднозначности будут всякого рода:

Так однозначно:
int a = 1;
int b = 2;
auto x = a < b ? [](auto bb) -> bool { return bb; }(b) : [](auto aa) { return 0 < aa; }(a);

а вот с двоеточием не очень:
int a = 1;
int b = 2;
auto x = a < b ? [](auto bb) : bool { return bb; }(b) : [](auto aa) { return 0 < aa; }(a);
И каждый день — без права на ошибку...
Re: заменить return на -> ?
От: kov_serg Россия  
Дата: 07.10.20 14:21
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Можно ли в следующей версии стандарта разрешить вместо return statement использовать -> ?

BFE>Что скажите?

З@&$ал Не радует современный C++ попробуйте nim
Re[5]: заменить return на -> ?
От: LaptevVV Россия  
Дата: 07.10.20 16:08
Оценка:
BFE>а вот с двоеточием не очень:
BFE>
BFE>int a = 1;
BFE>int b = 2;
BFE>auto x = ( a < b ) ? ([](auto bb) : bool { return bb; }(b)) : ([](auto aa) { return 0 < aa; }(a));
BFE>

Дык в скобки надо брать!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[6]: заменить return на -> ?
От: B0FEE664  
Дата: 07.10.20 16:50
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Дык в скобки надо брать!

В стандартном варианте лишние скобки не нужны.
И каждый день — без права на ошибку...
Отредактировано 07.10.2020 16:50 B0FEE664 . Предыдущая версия .
Re[3]: заменить return на -> ?
От: Aleх  
Дата: 08.10.20 02:54
Оценка:
[](auto& x){0 == x;} // void
[](auto& x){0 == x} // bool
Отредактировано 08.10.2020 2:56 Aleх . Предыдущая версия .
Re[2]: заменить return на -> ?
От: T4r4sB Россия  
Дата: 08.10.20 04:49
Оценка:
Здравствуйте, koenjihyakkei, Вы писали:

K>Здравствуйте, B0FEE664, Вы писали:


K>Зачем полумеры, нужно как в Руби — последнее выражение есть возвращаемое значение:


K>
K>[](auto& x){0 == x;}
K>


На постфиксных так:
[0 =]
Re[2]: заменить return на -> ?
От: SkyDance Земля  
Дата: 08.10.20 04:56
Оценка:
K>Зачем полумеры, нужно как в Руби — последнее выражение есть возвращаемое значение:

Лиспе, таки И эрланге, и прочих — очень древних! — языках.
Re[4]: заменить return на -> ?
От: Muxa  
Дата: 08.10.20 06:06
Оценка: +1
A>[](auto& x){0 == x;} // void
A>[](auto& x){0 == x} // bool


 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.