Tôi không biết tại sao các mã này không thể được biên dịch. Tôi đã được thử nghiệm trong Visual C++ 2010 và gcc với -std = C++ 0x. bất cứ ai đưa ra một số gợi ý? cảm ơn!Câu hỏi về sự sụp đổ tham chiếu C++ 0x
template<typename T>
class Foo
{
public:
void test(const T&){cout<<"const";}
void test( T&){cout<<"non const";}
};
int main()
{
int a;
Foo<int&> f;
}
biên dịch báo lỗi: 'void Foo :: test (T): hàm thành viên đã được xác định hoặc tuyên bố
nhưng tại sao điều này có thể được biên dịch?
template<typename T> void foo(const T&){cout<<"const"; }
template<typename T> void foo(T&){cout<<"non const"; }
int main()
{
int a;
foo<int&>(a);
}
I'v đọc C++ 0x bài viết cho biết: T & & == T &, vì vậy const T & & == const T &?