मैं एक टेम्पलेट समारोह है कि एक std::stack<T>
के साथ कुछ और T
का एक उदाहरण है, उदाहरण के लिए लिखना चाहते हैं:क्या एक अच्छा सी ++ संकलक एक संदर्भ को अनुकूलित करेगा?
template<class StackType> inline
bool some_func(StackType const &s, typename StackType::value_type const &v) {
// ...
}
कारण मैं संदर्भ द्वारा v
पारित मामले के लिए अनुकूलन करने के लिए जहां StackType::value_type
एक struct
है निश्चित रूप से है या class
और मूल्य से एक संपूर्ण वस्तु की प्रतिलिपि बनाएँ।
हालांकि, StackType::value_type
int
जैसे "सरल" प्रकार है, तो यह निश्चित रूप से इसे मूल्य से पारित करने के लिए बेहतर है।
प्रश्न यह है: int
जैसे एक प्रकार के लिए जो ऊपर दिए गए फ़ंक्शन में औपचारिक तर्क के रूप में int const&
बन जाएगा, क्या संकलक संदर्भ को अनुकूलित कर देगा और इसे केवल मूल्य से पास करेगा?
यह एक बुरा संकलक होगा करता है। – lapk
यदि संकलक वास्तव में फ़ंक्शन को इनलाइन करने का निर्णय लेता है, तो यह निश्चित रूप से सबसे प्रभावी चीज़ करेगा, भले ही आप इसे कैसे परिभाषित करते हैं। – enobayram