tôi thấy ví dụ sau của enable_if cho C++ 11:C++ 11 lỗi enable_if
struct is_64_bit
{
static const bool value = sizeof(void*) == 8;
};
enable_if<is_64_bit::value, void>::type
my_memcpy(void* target, const void* source, size_t n)
{
cout << "64 bit memcpy" << endl;
}
enable_if<!is_64_bit::value, void>::type
my_memcpy(void* target, const void* source, size_t n)
{
cout << "32 bit memcpy" << endl;
}
Theo tôi được biết, tùy thuộc vào kiến trúc hệ thống, các "my_memcpy" chức năng sẽ có sẵn trong hai cho 32 hoặc các phiên bản 64 bit. Nhưng tôi nhận được lỗi sau khi biên soạn:
error: ‘type’ in ‘struct std::enable_if<false, void>’ does not name a type
Tôi hơi bối rối vì tôi nghĩ chỉ có phiên bản 32 có sẵn (tôi đang sử dụng Linux Fedora 32 bit).
Có thể đã xảy ra sự cố với ví dụ này? hoặc Tôi thiếu cái gì?
Cảm ơn.
Cảm ơn cyon. Nó được giải quyết ngay bây giờ. Ngoài ra tôi có một sự hiểu biết tốt hơn về chủ đề này. :) – user1274605