मैं अपने कोडबेस का हिस्सा सी ++ 11 से सी ++ 14 तक अपग्रेड कर रहा हूं। मेरे पास कई गणित उपयोगिता फ़ंक्शन हैं जो एकाधिक इनपुट तर्क लेते हैं और std::common_type_t<...>
प्रकार के एकल मान को वापस करते हैं।क्या यह हमेशा से सुरक्षित है सी ++ 14 के ऑटो फ़ंक्शन प्रकार का उपयोग std :: common_type के स्थान पर वापसी कटौती?
मैं स्पष्ट वापसी मूल्य को एक साधारण auto
के साथ बदलने की सोच रहा हूं। मुझे लगता है कि कटौती टाइप इन मामलों में एक आम प्रकार खोजने की कोशिश करता है। क्या कोई ऐसा मामला है जहां यह काम नहीं करेगा?
यह हमेशा सुरक्षितauto
साथ std::common_type_T<...>
वापसी मान की सभी घटनाओं कन्वर्ट करने के लिए है?
उदाहरण समारोह:
template<typename T1, typename T2, typename T3>
std::common_type_t<T1, T2, T3> getClamped(T1 mValue, T2 mMin, T3 mMax)
{
return mValue < mMin ? mMin : (mValue > mMax ? mMax : mValue);
}
नहीं, लेकिन?: एक आम प्रकार है। –
क्या मैं पूछ सकता हूं कि आप इस तरह के फ़ंक्शन के लिए विभिन्न प्रकार के तर्क क्यों लेते हैं और न केवल एक ही प्रकार के? – mattnewport
@mattnewport: शायद क्योंकि यह अन्यथा नहीं लिया जा सकता है। सोचें 'std :: min (1, 1.) '। इस विशेष मामले के लिए न्यूनतम/अधिकतम पर कटौती को रोकने के लिए बेहतर होगा, लेकिन यह सामान्य मामले में लागू नहीं होता है। –