ラムダ関数を変数に格納する場合、インスタンスと参照、どちらを格納したことになるんでしょう?

1: auto func=[](int x,int y){return x+y;};
2: {
3:   func=[](int x,int y){return x-y;};
4: }
5: std::cout<<func(2,1);   //出力:1

3行目にfuncにラムダ関数を代入していますが、
これが参照なら5行目はスコープ外ですから動作が不定になりそうです
g++4.5.1では1が出力されたのですが