templateを使用することであらゆる型に対して適応することのできるコードを書くことができる.
template <typename T> void func(T a) {};
型推論で使用する場合
func(1);
func(2.5)
型指定して使用する場合
func<double>(2.5);
// double l1=length<pcl::PointXYZ>(p_fl,p_fr);
// double l2=length<pcl::PointXYZ>(p_fr,R_xl.end_);
// double l3=length<pcl::PointXYZ>(R_xl.end_,L_xl.end_);
// double l4=length<pcl::PointXYZ>(L_xl.end_,p_fl);
// std::cout << l1 << " " << l2 << " " << l3 << " " << l4 << std::endl;
template <class POINT>
double length(const POINT &p0, const POINT &p1)
{
return std::hypot(p0.x - p1.x, p0.y - p1.y);
}
template <typename T> class MyClass {};
型指定での使用.(型推論は不可能)
MyClass<int> myclass;
例
#include<iostream>
template <typename T> class TYPE
{
private:
T data;
public:
TYPE(){};
TYPE(T val){this->data=val;};
TYPE& operator = (T val){this->data=val;return *this;};
TYPE& operator = (TYPE val){this->data=val;return *this;};
operator T(){return data;};
~TYPE(){};
};
int main()
{
TYPE<int> val=1;
std::cout << val << std::endl;
return 0;
template <typename T = char> class MyClass;
template <typename A, typename B = A>
template <typename A, typename B = Array<A> >