- Examples

In this lesson, we will look at some examples for template specialization.

Example 1

Press + to interact
// TemplateSpecialization.cpp
#include <iostream>
class Account{
public:
explicit Account(double b): balance(b){}
double getBalance() const {
return balance;
}
private:
double balance;
};
template <typename T, int Line, int Column>
class Matrix{
std::string getName() const { return "Primary Template"; }
};
template <typename T>
class Matrix<T,3,3>{
std::string name{"Partial Specialization"};
};
template <>
class Matrix<int,3,3>{};
template<typename T>
bool isSmaller(T fir, T sec){
return fir < sec;
}
template <>
bool isSmaller<Account>(Account fir, Account sec){
return fir.getBalance() < sec.getBalance();
}
int main(){
std::cout << std::boolalpha << std::endl;
Matrix<double,3,4> primaryM;
Matrix<double,3,3> partialM;
Matrix<int,3,3> fullM;
std::cout << "isSmaller(3,4): " << isSmaller(3,4) << std::endl;
std::cout << "isSmaller(Account(100.0),Account(200.0)): "<< isSmaller(Account(100.0),Account(200.0) ) << std::endl;
std::cout << std::endl;
}

Explanation

In the above code, we are modifying the example that we have used in template arguments example.

  • Primary ...

Access this course and 1400+ top-rated courses and projects.