2011-05-20 18 views

उत्तर

9

test<std::string> (नोट: अंत में कोई भी ब्रांड्स) जो आप उम्मीद करते हैं वह उत्पन्न करेगा।

test<std::string()> के रूप में यह लेखन प्रकार "समारोह कोई तर्क ले रहे हैं और लौटने std :: स्ट्रिंग"

2

क्या आप इस समारोह को लागू करने का मतलब रखते हैं जैसे: test<std::string>()?

आपके test<std::string()>() में, टेम्पलेट पैरामीटर std::string नहीं है लेकिन एक फ़ंक्शन प्रकार (कोई फ़ंक्शन कोई तर्क नहीं ले रहा है और std::string लौटा रहा है)।

0

std::string() एक typeid है के साथ टेम्पलेट को दर्शाता है। एक टाइपिड गायब घोषणाकर्ता आईडी के साथ एक सरल घोषणा है।

टेम्पलेट-तर्क में, यदि किसी प्रकार-आईडी और अभिव्यक्ति के बीच अस्पष्टता है तो कॉल को किसी प्रकार-आईडी पर हल किया जाता है। तो अपने कोड आउटपुट 1

आप आप उत्पादन 2.

+0

क्यों एक downvote देना होगा foo<std::string>() यानी आउटपुट के रूप में 2 प्राप्त करने के लिए आदेश में कोष्ठकों () हटाने की जरूरत? –

संबंधित मुद्दे