क्या इस से Finalizer
कक्षा लिखने का कोई और सामान्य तरीका है?मैन्युअल क्लास टेम्पलेट पैरामीटर विनिर्देश से छुटकारा पाने के लिए कैसे करें
Finalizer finalizer([]() { std::cout << "str" << std::endl; });
क्या यह संभव है:
#include <functional>
#include <iostream>
template <typename T>
class Finalizer
{
public:
Finalizer(const std::function<T>& f) : _f(f) {}
~Finalizer()
{
_f();
}
private:
std::function<T> _f;
};
int main()
{
Finalizer<void()> finalizer([]() { std::cout << "str" << std::endl; });
}
मैं चाहता हूँ इस तरह कोड लिखने के लिए सक्षम होने के लिए मैनुअल वर्ग टेम्पलेट पैरामीटर विनिर्देश से छुटकारा पाने के लिए?
सीधे क्यों नहीं लिख 'std :: समारोह'? या एक डिफ़ॉल्ट टेम्पलेट पैरामीटर 'टाइपनाम टी = शून्य() 'दे? –
Garf365
@ Garf365 अधिक सामान्य होने के लिए। कुछ फ़ाइनलाइज़र विधियां वास्तव में एक अलग फ़ंक्शन हो सकती हैं जो त्रुटि कोड वापस कर सकती हैं लेकिन मैं उन्हें 'फाइनलाइज़र' कक्षा में किसी भी तरह से उपयोग करना चाहता हूं और ऐसी स्थितियों में उनके त्रुटि कोड को अनदेखा कर सकता हूं – FrozenHeart
@ फ्रोजनहेर्ट 'std :: function' का उपयोग करके स्वचालित रूप से अनदेखा हो जाएगा परिणाम, यहां कोई समस्या नहीं है। –
lisyarus