c++ 以模板类作为参数的模板

我想写一个以模板类做为参数的模板,,可惜。。。没成功。

 

1.从模板参数到模板:这个简单:

//类A是一个模板

template

class A{

 

} ;

//类B,想使用类A的模板

template

 

class B{

   A a;

};

 

2.从模板到模板参数:

 

类B想使用类A里面的模板参数:

template

class A{

 typedef T T1;

};

template

 

class B{

     A::T1 a_t1;

};

 

实例:

 

// templatestudy.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include 
#include 
#include 
#include 
//谓词 
using namespace std;

template 
 
struct LESS:public binary_function<_M1_T,_M1_T,bool>
{
	//接受2个参数
    bool operator()(const _M1_T& x,const _M1_T&y) const
    {
         return x

struct LESS_THAN:public unary_function
{
	T arg2;
	//构造函数
	explicit LESS_THAN(const T& x):arg2(x){}
	//接受一个参数的()操作
	bool operator()(const T& x) const {
		return x

class _binder2nd:public unary_function
{
	protected:
      BinOp op;
	  typename BinOp::second_argument_type arg2;
	public:
	  _binder2nd(const BinOp & x,const typename BinOp::second_argument_type&v):op(x),arg2(v){
	  }
	  result_type operator()(const argument_type&x) const{
	   return op(x,arg2);
	  }
};

//约束第二个参数
int main(int argc, char *argv[])
{
	int a=5;
	LESS_THAN less_10(10);
	less_10(a);
    system("PAUSE");
    return EXIT_SUCCESS;
}
使用方法:
bind2nd(less(),7);
意思是把less()函数对象,的第二个函数参数绑定为7.


 

你可能感兴趣的:(c++ 以模板类作为参数的模板)