LINUX.ORG.RU

Ссылка по *nullptr?

 ,


0

2

У меня есть некая функция возвращающая ссылку. В некоторых случаях она должна вернуть заведомо невалидную ссылку и это должно легко проверятся тем кто ее вызывал, как то так

T& f(...){
   ...
   return *(T*)nullptr; 
   ...
};

Это немножко странно выглядит, но работает. Но на gcc8.3.0 уже не работает

T& ref = f(...);
if(&ref){...} //<== warning: nonnull argument ‘ref’ compared to NULL

насколько я понял он при оптимизации с -O3 эту проверку выкинул, а потом улетел с сегфолтом, дооптимизировался… gcc5.4.0 нормально работает.

В общем я готов поменять ссылку на указатель (хотя это слегка испоганит кое че дальше), но скажите - а с чего это вообще отвалилось то и насколько такая нулевая ссылка плоха? Ссылка же семантически ничем от указателя не отличается…

★★★★★
Ответ на: комментарий от fsb4000

Ну и кастану @stasolog

А вот это было зря - он у меня все равно в игноре, но от Вас это звучит специфично. Можно вспомнить Ваши эпические перлы про отсутствие типизации в питоне (что позволено не-программисту вроде меня то не позволено Настоящему Профессионалу вроде Вас), но мне не хочется устраивать срач в своих темах, тем более сейчас на это нет времени.

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

AntonI ★★★★★
() автор топика
Последнее исправление: AntonI (всего исправлений: 1)
Ответ на: комментарий от AntonI

Да лучше весь лор заигнорить. Такой раковник не должен отвлекать настоящего профессионала, и должен быть счастлив помогать ему в сложных инженерных вопросах.

anonymous
()
Ответ на: комментарий от AntonI

Я долго игнорировал ваши угрозы заигнорировать пользователей форума, но больше не могу это игнорировать. Если вы и дальше продолжите игнорировать призывы перестать угрожать заигнорировать, я не смогу это игнорировать и буду вынужден проигнорировать игнорирование ваших угроз заигнорировать неопределённый круг лиц и всё-таки вас заигнорировать.

i-rinat ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.