যখন আপনি C++-এ একটি টেমপ্লেট ইনস্ট্যানশিয়েট করেন, কম্পাইলার একটি নতুন ক্লাস তৈরি করে। এই ক্লাসে টেমপ্লেট আর্গুমেন্ট দিয়ে যেসব জায়গায় আপনি টেমপ্লেট আর্গুমেন্ট রেখেছিলেন, সেগুলো আপনি ব্যবহার করার সময় যে আর্গুমেন্ট পাস করেন তারlarla রিপ্লেস করা হয়। উদাহরণস্বরূপ:
template<typename T> class MyClass {
T foo;
T myMethod(T arg1, T arg2) {
// Implementation
}
};
আপনার প্রোগ্রামে कहीं এই ক্লাস ব্যবহার করেন:
MyClass<int> x;
এই স্টেটমেন্ট এনকাউন্টার করার সাথে সাথে কম্পাইলার আপনার পাস করা প্রতিটি টাইপ আর্গুমেন্টের জন্য একটি নতুন ক্লাস তৈরি করে। উদাহরণস্বরূপ, যদি আপনি ভিন্ন টেমপ্লেট আর্গুমেন্ট দিয়ে ৩টি অবজেক্ট তৈরি করেন, তবে আপনি ৩টি ক্লাস পাবেন, যা নিচের সমতুল্য হবে:
class MyClassInt {
int foo;
int myMethod(int arg1, int arg2) {
// Implementation
}
};
এটি করতে হলে, কম্পাইলারকে ক্লাস ও মেথডের ইমপ্লিমেন্টেশন অ্যাক্সেস করতে হয় সেই স্টেটমেন্ট এনকাউন্টার করার আগে, যাতে সেটি টেমপ্লেট আর্গুমেন্ট দিয়ে (এখানে int) ইনস্ট্যানশিয়েট করা যায়। যদি এই টেমপ্লেট ক্লাসের ইমপ্লিমেন্টেশন হেডার ফাইলে না থাকে, তবে সেগুলো অ্যাক্সেসযোগ্য নয় এবং কম্পাইল হবে না।