Здравствуйте, Videoman, Вы писали:
V>Опять что-то перемудрили в стандарте или я неправильно понимаю ссылочные квалификаторы у методов класса?
V>В оправдании себя: думал что 'const&' квалификатор метода класса убережет меня от вызова метода у временного объекта. Но не уберегло, не фортануло. Стандарт позволяет вызвать метод у временного константного объекта. Дальше масса объяснений зачем это, что ссылка константная и она продлевается и это безопасно и бла-бла-бла. Во у меня рабочий пример и таки приведение оказалось не безопасным.
V>Но почему такое поведение по умолчанию, где я ошибся в своей логике-реализации ?
Разницу между 'const' и 'const&' ты можешь обнаружить только при наличии в классе других перегрузок. Например, перегрузка по 'const' приводит к коллизии с перегрузкой по '&&', а перегрузка по 'const&' не приводит. В остальном же 'const' и 'const&' ведут себя одинаково. Т.е. обе эти перегрузки могут работать для rvalue-выражений. Т.е. правила в принципе те же самые, что и с явными параметрами обычных функций.
--
Справедливость выше закона. А человечность выше справедливости.