std(N3126) 8.3.2/1 says that: Cv-qualified references are ill-formed except when the cv-qualifiers are introduced through the use of a typedef (7.1.3) or of a template type argument (14.3), in which case the cv-qualifiers are ignored. Why the following code compiled failed on GCC 4.5.0 ? template <typename T> void foo (T const &); void baz (); foo (baz); while template <typename T> void foo (T const &); void baz (); void Test() { foo (baz); } successfully. Really wired. another question is: what is cv-qualifier reference ? Your guys told me that: const int &m; is not a cv-qualifier reference. Could you give me an example on the cv-qualifier reference ? Thanks.