Имеем два исходника:
#include <iostream> struct A { A(); const int& i; }; A::A() : i(123) {} int main() { A a; std::cout << a.i << std::endl; }
и
#include <iostream> struct A { A() : i(123) {} const int& i; }; int main() { A a; std::cout << a.i << std::endl; }
Будучи скомпилированными компилятором от Sun или GCC, эти два примера печатают разные результаты. И первый - неправильный. Студия же 2010, с настройками по умолчанию, дает предупреждение и генерирует код, работающий правильно (точнее, как ожидает программист) в обоих случаях.
Понятно, что код сам по себе несколько странный, так как сложно представить себе, кому может понадобиться инициализировать ссылку константой, которая передается в конструктор не извне, а создается временно во время обработки списка инициализации. Но вот на ошибку-опечатку вполне себе потянет.
Ко мне пример попал как результат анализа реального бага.