Re[5]: Правомерно ли такое
От: ollv СССР https://youtu.be/DQDoYs6wHoo
Дата: 18.08.20 09:06
Оценка:
Здравствуйте, B0FEE664, Вы писали:

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


BFE>>>Сигфолта не будет, т.к. не скомпилируется.

O>>Да на gcc compile rvalue не ляжет в ссылку. просто майкрософт ведет себя вероломно. Т/к/ он мало того, что компилирует, так еще и без ворнингов (с настройками по умолчанию). Его конечно можно нагнуть, чтобы такое не компилировалось но это опасности не отменяет.

BFE>В чём опасность? Такой код компилируется и работает у Майкрософта более 15-ти лет, ещё до принятия стандарта 2011-ого года, до move семантики. То, что это не по стандарту — это проблемы стандарта, а не кода.

Ну давай в политику такие вопросы )) Я считаю, что если ты пишешь на С++ такое typename calc_type<somw_arg>::type v = get_foo(); должно работать одинаково. На то он и стандарт. Кстати, сейчас майкрософт работает над этим. И по моему уже так просто в ссылку rvalue не пихнуть

O>>+ к тому есть продление жизни для ссылок — тоже опасное поведение, с такими трюками можно легко запутаться особенно присутствуют сложные вычисления типов

BFE>Здесь нет продления жизни для ссылок.
есть но завуалированное. ссылка принимает rvalue и объект живет, в то время как rvalue уже умирает по стандарту после вызова конструктора. Потому оно и не компилируется в джисях

O>>В общем, я могу сказать одно, я такие практики оч не поддерживаю.

BFE>Никакой особой практики я тут не вижу. Это довольно редкий случай, как правило порождаемый при переиспользовании кода в ситуациях не предвиденных изначально.
нет не редкий. встречается постоянно. тебя спасет только если ты пишешь только под мягких, с мультиплатформенностью таких практик (я лично) избегаю. просто потому как при вычислении типа легко можно получить такой эффект ..
и это ) ты считай как считаешь нужным. я не вижу даже смысла тут дискуссию заводить

O>>такое скомпилируется и может даже имеет какой-то смысл. Но изначально — r& fun(type& v) { return v; }

O>>я пытаюсь избегать, именно по причине того, что майкрософт ведет себя вероломно.

BFE>Веру в что ломает майкрософт?

Ты собрался в этимологию слова вероломно уходить? смысл в том, что один и тот-же код может работать по разному в зависимости от платформы в ключевом (как я считаю) контексте. А должен работать одинаково
ну это мое мнение. Ты можешь считать, что это проблема стандарта, а не майкрософт С++, но я считаю иначе. Чисто математически это — верно. Но политически ты можешь с этим поспорить. У меня желания нет ))
Compiler can be as trained AI but can't compose music.
Antheil piano jazz sonata. Я болен ПГМ.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.