मान लीजिए मैं अपने कस्टम स्ट्रिंग वर्ग है:करें स्ट्रिंग टेम्पलेट परोक्ष स्थिरांक चार पारित करके *
class my_string : public std::string
{
// ...
}
और मैं एक टेम्प्लेटेड समारोह जो डिफ़ॉल्ट रूप से my_string
के साथ दोनों को स्वीकार करता है बनाना चाहते:
template <typename TString = my_string>
TString do_something(const TString& input)
{
// ...
}
लेकिन जब मैं से कॉल करने की:
auto result = do_something("abcdef");
यह (बेशक)कॉल। कैसे बिना स्पष्ट रूप से (अर्थात do_something("abcdef")
लिखते हैं, नहीं do_something<my_string>("abcdef")
) प्रकार को निर्दिष्ट do_something<my_string>
कॉल करने के लिए यह मजबूर करने के लिए?
नोट: हालांकि केवल एक उदाहरण, std :: स्ट्रिंग से कभी प्राप्त नहीं होता है! –
मैं केवल 'const char []' के लिए एक अधिभार जोड़ूंगा और इसे उस फ़ंक्शन पर अग्रेषित कर दूंगा जिसे आप कॉल करना चाहते हैं। – NathanOliver
लिटल स्ट्रिंग प्रत्यय विकल्प के रूप में मदद कर सकता है: '" abcdef "s' और 'ऑपरेटर'" _my_s' '" abcdef "_my_s' के साथ। – Jarod42