gcc3.4.4で以下のようなプログラムを書いたらエラーが出たんだが

class A {};
class B {};
class C {};
class T { public: void func(A&, const B&, const C&) const {} };
A getA() { static A a; return a; }
B getB() { static B b; return b; }
C getC() { static C c; return c; }
int main()
{
T t;
t.func(getA(), getB(), getC());
}
main.cpp:14: error: no matching function for call to `T::func(A, B, C)'
main.cpp:7: note: candidates are: void T::func(A&, const B&, const C&) const

C++だと一時的なオブジェクトを暗黙的に作成して参照で渡してくれるもんじゃないの?

int main()
{
T t;
A a = getA();
B b = getB();
C c = getC();
t.func(a, b, c);
}

こう書かないとダメなもんかね…。