कार्यकारी ड्राफ्ट स्पष्ट रूप से कॉल करता है कि डिफॉल्ट-फ़ंक्शंस विशेष सदस्य फ़ंक्शंस (जैसे कॉपी-कन्स्ट्रक्टर, डिफ़ॉल्ट-कन्स्ट्रक्टर, आदि, (§8.4.2.1-1) होना चाहिए। जो सही समझ में आता है।क्या कोई फ़ंक्शन हटाए गए फ़ंक्शन हो सकता है?
हालांकि, मुझे हटाए गए कार्यों पर कोई प्रतिबंध नहीं दिख रहा है (§8.4.3)। क्या वह सही है?
या दूसरे शब्दों में ये तीन उदाहरण मान्य हैं c++0
?
struct Foo
{
// 1
int bar(int) = delete;
};
// 2
int baz(int) = delete;
template< typename T >
int boo(T t);
// 3
template<>
int boo<int>(int t) = delete;
हटाए गए फ़ंक्शन को भी क्या है? – Puppy
एक हटाया गया कार्य वह है जो अस्तित्व में था अगर इसे हटाया नहीं गया था। जैसे आप क्लास कॉपी सीटीओआर को हटा सकते हैं। यह दो कारणों से निजी अनुपूरक बनाने के लिए थोड़ा बेहतर है। 1. कोड और 2 पढ़ते समय यह अधिक स्पष्ट है। आप एक स्पष्ट त्रुटि संदेश प्राप्त कर सकते हैं। – MSalters
@MSalters: आप उन कार्यों को भी हटा सकते हैं जो मौजूद नहीं हैं, उनके उपयोग को रोकते हैं। जैसे दिया गया 'शून्य एफ (डबल); शून्य एफ (int) = हटाएं; ', एफ (42) अब निहित रूपांतरण का उपयोग करने के बजाय एक त्रुटि है। –