non-type template arguments with auto के आगामी सी ++ 17 सुविधा के साथ, यह इस तरह से std::function
लागू करने के लिए संभव हो जाएगा के रूप में, डाल करने के लिए सक्षम होने के लिए उदाहरण के लिए, निम्न कार्य:ऑटो फीचर के साथ सी ++ 17 टेम्पलेट तर्कों को std :: function ऑब्जेक्ट्स को बाधित करने की अनुमति होगी?
bool f(int n, double d) {}
bool g(bool b, char c) {}
bool h(bool b) {}
में
ऑटो टेम्प्लेट की std::function
ऑब्जेक्ट्स:
std::function<bool(auto, auto)> faa = f; // ok
std::function<bool(int, auto)> fia = f; // ok
std::function<bool(double, auto)> fda = f; // error: function type mismatch
std::function<bool(auto, auto)> gaa = g; // ok
std::function<bool(auto, auto)> haa = h; // error: function type mismatch
std::function<bool(auto)> ha = h; // ok
और इसी तरह।
दूसरे शब्दों में, std::function
ऑब्जेक्ट्स स्वीकार करने वाले फ़ंक्शन प्रकारों पर बाध्य हैं?
(वर्तमान में, जीसीसी पर हम एक error: 'auto' parameter not permitted in this context
मिलता है।)
आप 'std :: function 'को कैसे कॉल करेंगे, मान लीजिए कि ऐसी कोई चीज़ मौजूद है? –
@ एनएम .: बहुत, बहुत सावधानी से। –
@ लाइटनेसरेसेसिन ऑर्बिट प्री-सी ++ 17 कार्यों की सामान्य मैला कॉलिंग के विपरीत? –