Tôi muốn kiểm tra xem đối số mẫu có thuộc loại tham chiếu hay không trong C++ 03. (Chúng tôi đã có is_reference
trong C++ 11 và Tăng cường).Kiểm tra xem đối số mẫu có phải là tham chiếu [C++ 03]
Tôi đã sử dụng SFINAE và thực tế là chúng tôi không thể có con trỏ tham chiếu.
Đây là giải pháp của tôi
#include <iostream>
template<typename T>
class IsReference {
private:
typedef char One;
typedef struct { char a[2]; } Two;
template<typename C> static One test(C*);
template<typename C> static Two test(...);
public:
enum { val = sizeof(IsReference<T>::template test<T>(0)) == 1 };
enum { result = !val };
};
int main()
{
std::cout<< IsReference<int&>::result; // outputs 1
std::cout<< IsReference<int>::result; // outputs 0
}
Bất kỳ vấn đề cụ thể với nó? Bất cứ ai có thể cung cấp cho tôi một giải pháp tốt hơn?
Đối với đầy đủ bạn có thể thêm các trường hợp thử nghiệm cho con trỏ tham khảo, ví dụ: 'IsReference :: result'. –
iammilind