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ビットを使用しています)。
たぶん、この例に何か問題がありますか?または私は何かが欠けていますか?
ありがとう。