मान लीजिए इस प्रकार हम एक वर्ग बॉक्स है:उचित भंडारण मूल्य प्रकार प्राप्त करना?
struct Base {}
template<typename T>
struct Box : Base
{
template<typename... Args>
Box(Args&&... args)
: t(forward<Args>(args)...)
{}
T t;
}
और फिर हम एक समारोह MakeBox है:
template<typename X>
Base* MakeBox(X&& x)
{
return new Box<???>(forward<X>(x));
}
प्रकार X
MakeBox करने के लिए कॉल में इस्तेमाल किया पैरामीटर से निष्कर्ष निकाला है।
हम तो मुझे लगता है कि अगर हम सिर्फ भोलेपन का उपयोग उचित "भंडारण प्रकार" पैरामीटर टी
एक्स से किसी भी तरह की गणना करने की जरूरत है:
return new Box<X>(forward<X>(x));
तो यह समस्याएं होंगी।
स्पष्ट रूप से std::bind
और std::function
इन समस्याओं से निपटने की आवश्यकता है, वे इसे कैसे करते हैं?
std::decay
वैसे भी यहां सहायक है?
नहीं है ['std :: remove_reference'] (http://en.cppreference.com/w/cpp/types/remove_reference) जो आप खोज रहे हैं? –
jogojapan
@jogojapan: क्या यह 'std :: bind' अपने बाध्य पैरामीटर को स्टोर करने के लिए उपयोग करता है? –
'std :: decay' वही है जो आप खोज रहे हैं। – Mankarse