Вот простенький пример:
typedef /*some type here*/ T;
T const const_value = T(); // ok...
T const & const_ref = const_value; // ok...
T & volatile_ref = (T &const_ref; // ok?!..
volatile_ref = /*some value of T*/; // ok?!! Why?! =O.o=
Обьясните мне, господа хорошие, почему при изменении значения volatile_ref у меня замечательно меняется и значение const_value? Что, const теперь у нас стал нежестким ограничителем, да? Я вот не понимаю, почему средствами языка не производится контроль за изменяемыми по ссылке данными?
А вообще, я считаю такой код семантической ошибкой.
UPD: Компилятор - штатный от Microsoft Visual Studio 2005.