मैं के लिए सी ++ 11 enable_if के निम्न उदाहरण देखा: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 संस्करण उपलब्ध होना चाहिए (मैं लिनक्स फेडोरा 32 बिट का उपयोग कर रहा)।
शायद इस उदाहरण के साथ कुछ गलत है? या क्या मैं कुछ न कुछ भूल रहा हूं?
धन्यवाद।
धन्यवाद Cyon। यह अभी हल हो गया है। इसके अलावा मुझे इस विषय की बेहतर समझ है। :) – user1274605