কার্যনির্বাহী সারাংশ: এটি করবেন না।
j_random_hacker এর উত্তর আপনাকে কীভাবে এটি করতে হবে তা বলে । তবে, আমি এটি উল্লেখ করতে চাই যে আপনার এটি করা উচিত নয় । টেম্পলেটগুলির সম্পূর্ণ বিন্দুটি হ'ল তারা যে কোনও সামঞ্জস্যপূর্ণ প্রকার গ্রহণ করতে পারে এবং জাভা শৈলীর ধরণের সীমাবদ্ধতাগুলি এটি ভেঙে দেয়।
জাভার ধরণের সীমাবদ্ধতাগুলি কোনও বাগ নয় যা কোনও বৈশিষ্ট্য নয়। তারা সেখানে আছে কারণ জাভা জেনেরিকের উপর মুছে ফেলা টাইপ করে, তাই জাভা একাই টাইপ প্যারামিটারের মানের ভিত্তিতে কীভাবে পদ্ধতিগুলি কল করতে পারেন তা নির্ধারণ করতে পারে না।
অন্যদিকে সি ++ এর তেমন কোনও বাধা নেই। টেমপ্লেট প্যারামিটার প্রকারগুলি যে ধরণের সাথে তারা ব্যবহার করা হয় তার সাথে সামঞ্জস্য হতে পারে। একটি সাধারণ বেস শ্রেণি হতে হবে না। এটি পাইথনের "হাঁসের টাইপিংয়ের মতো" তবে সংকলন সময়ে করা হয়েছে।
টেমপ্লেটগুলির শক্তি দেখানোর একটি সাধারণ উদাহরণ:
// Sum a vector of some type.
// Example:
// int total = sum({1,2,3,4,5});
template <typename T>
T sum(const vector<T>& vec) {
T total = T();
for (const T& x : vec) {
total += x;
}
return total;
}
এই যোগফলটি সঠিক ক্রিয়াকলাপগুলিকে সমর্থন করে এমন কোনও ধরণের ভেক্টরকে যোগ করতে পারে। এটি আন্তঃ / দীর্ঘ / ভাসা / ডাবল এবং ব্যবহারকারী সংজ্ঞায়িত সংখ্যার প্রকারের সাথে + + অপারেটরকে ওভারলোড উভয়ের সাথেই কাজ করে। হেক, আপনি এমনকি স্ট্রিংগুলিতে যোগ দিতে এই ফাংশনটি ব্যবহার করতে পারেন, যেহেতু তারা ++ সমর্থন করে।
আদিমদের বক্সিং / আনবক্সিংয়ের প্রয়োজন নেই।
দ্রষ্টব্য যে এটি টি () ব্যবহার করে টি এর নতুন দৃষ্টান্তও তৈরি করে। অন্তর্নির্মিত ইন্টারফেস ব্যবহার করে এটি সি ++ তে তুচ্ছ, তবে জাভাতে টাইপ সীমাবদ্ধতার সাথে সত্যই সম্ভব নয়।
যদিও সি ++ টেমপ্লেটগুলিতে স্পষ্টত ধরণের বাধা নেই, তারা এখনও নিরাপদে টাইপ করে এবং সঠিক ক্রিয়াকলাপ সমর্থন করে না এমন কোড দিয়ে সংকলন করবে না।