সি ++ টেম্পলেটগুলি - সম্পূর্ণ গাইড, ২ য় সংস্করণ সর্বাধিক টেমপ্লেটটি উপস্থাপন করেছে :
template<typename T>
T max (T a, T b)
{
// if b < a then yield a else yield b
return b < a ? a : b;
}
এবং এটি এর “b < a ? a : b”পরিবর্তে ব্যবহার করে ব্যাখ্যা করে “a < b ? b : a”:
মনে রাখবেন যে [স্টেপেনভ নোটস] অনুসারে সর্বাধিক () টেমপ্লেট ইচ্ছাকৃতভাবে "বি <a? a: b ”এর পরিবর্তে“ a <b? বি: একটি "দুটি মান সমান হলেও সমান না হলেও ফাংশনটি সঠিকভাবে আচরণ করে তা নিশ্চিত করতে।
" even if the two values are equivalent but not equal." কিভাবে বুঝবেন ? “a < b ? b : a”আমার জন্য একই ফলাফল আছে বলে মনে হয়।
aএবং এর bসাথে পার্থক্য করতে পারেন std::addressof। অল।
a = max(a, b);(বারবার) করেন তবে আপনি aঅকারণে প্রতিস্থাপন করতে চাইবেন না ।
aএকটি অনুলিপি দিয়ে ওভাররাইড করতে যাচ্ছেন a)।
std::addressofএটি অপ্রাসঙ্গিক। আসলে, প্রদত্ত জন্য T max(T a, T b)আমরা ইতিমধ্যে জানি addressof(a) != addressof(b)।
aএবংbহয় সমতুল্য , তারপর!(a < b) && !(b < a)সত্য, তাইa < bএবংb < aউভয় মিথ্যা, তাইb < a ? a : b,bযা নয় কি আপনি চান ... আপনি চান ফিরিয়ে দেওয়া হয়,a < b ? b : a।