पर निर्भर होना चाहिए मैं इस प्रकार एक वर्ग A
परिभाषित करने की कोशिश:सदस्य चर का प्रकार निर्माता तर्क के प्रकार
template< typename T >
class A
{
public:
A(T elem)
: _elem(elem)
{}
private:
TYPE _elem; // "TYPE" should be either "T" in case "elem" is an r-value or "T&" in case "elem" is an l-value.
};
यहाँ, मैं चाहता हूँ _elem
या तो मामले में प्रकार T
के लिए कि निर्माता का तर्क elem
एक है elem
के मामले में आर-वैल्यू या टाइप T&
टाइप एल-वैल्यू है।
क्या कोई जानता है कि इसे कैसे कार्यान्वित किया जा सकता है? और अनुमान है कि क्या तर्क एक lvalue या rvalue है
template <typename T>
auto make_a (T&& elem) {
return A<T>{std::forward<T>(elem)};
}
यह एक अग्रेषण संदर्भ का उपयोग करता है पूरी तरह से अग्रेषण द्वारा A
निर्माण करती है:
मैं आपके लिए यह लिखने के लिए पर्याप्त चालाक नहीं हूं, लेकिन आप इसे टेम्पलेट * विशेषज्ञता * का उपयोग करके प्राप्त करते हैं। ध्यान आकर्षित करने के लिए ऊपर उठाया। – Bathsheba
मुझे इसके लिए भी आवश्यकता है (दृश्य कक्षाएं लिखते समय) ... –