我看到了以下 C++11 的 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;
}
据我了解,根据系统架构,“my_memcpy”功能可用于 32 位或 64 位版本。但我在编译时收到以下错误:
error: ‘type’ in ‘struct std::enable_if<false, void>’ does not name a type
我有点困惑,因为我认为应该只有 32 版本可用(我使用的是 Linux Fedora 32 位)。
也许这个例子有问题?还是我错过了什么?
谢谢。