Re[5]: Задолбало гццой
От: wander  
Дата: 12.12.09 11:29
Оценка:
Здравствуйте, MikelSV, Вы писали:

MSV>Вы не поверите:

MSV>bool RunFunc(..., Val &retd=(Val&)Val());
MSV>ошибка: invalid cast of an rvalue expression of type ‘MCCVal’ to type ‘MCCVal&’

Отчего же, поверю. Это элементарно.
bool RunFunc(..., Val const & retd = Val());


Такие вещи подразумевают константность временных данных. Это очень редкий случай, когда действительно нужно менять что-то в таких объектах. В первую очередь, если возникает такой гвоздь — причина пересмотреть дизайн программы.

MSV>И я пишу в retd. и не интересно, будет ли оно использоваться или разрушится.

Как исправить — написано выше. Если вам нужно нарушить закон, вы должны будете отвечать за последствия. Нарушать закон можно так:
bool RunFunc(..., Val const & retd = Val())
{
   Val & retd_ = const_cast<Val &>(retd);
}


MSV>Для чего это было сделано история умалчивает

(8.5.3/5)
MSV>но за такие дела я смотрю на компилятор как на врага.
Смотрите лучше так на того, кто это писал.

MSV>Стандарты как минимум ограничивают фантазию.

Стандарты обеспечивают порядок. И не вина GCC, что MSVC выбрал путь анархии.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.