栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

modern c++ traits

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

modern c++ traits

example 1
#include  

template
struct Map
{
	typedef T value;
	typedef T& reference;
	typedef T* pointer;
};

void test1()
{
	Map::value a = 100.9;  //a的类型是int  所以是100
	std::cout << a << std::endl;
	Map::value b = 100.9; //同理 是100.9
	std::cout << b << std::endl;

}

template 
class Typeb1 
{
public:
	typedef T value_type1;
	typedef T& reference1;
	typedef U value_type2;
	typedef U& reference2;
};

template 
class A :public Typeb1
{

};

void test2()
{
	A::value_type1 a = 100;
	A::reference1 b = a;
	std::cout << "a: " << a << std::endl;
	std::cout << "b: " << b << std::endl;
}

template 
struct Binary
{
	typedef _A1 Arg1;
	typedef _A2 Arg2;
	typedef _R Rtn;
};


template
class Add :public Binary
{
public:
	TR bFunction(const T1& x, const T2& y) const {
		return x + y;
	}
};


void test3()
{
	double a = 100.1, b = 20;
	//AddaddObj;
	typename AddaddObj;
	std::cout << addObj.bFunction(a,b) << std::endl;
	//typename Add::Arg1 x = 1000; 同下
	Add::Arg1 x = 1000;
	std::cout << x << std::endl;
}


int main(void)
{
	//test1();
	//test2();
	test3();
	return 0;
}
example2

#include 


class Test1
{
public:
	char change(int x, double y) {
		return x;
	}
};

class Test2
{
public:
	double change(double x, double y) {
		return x;
	}
};

template

class Test
{
public:
	Rt change(T1 t1, T2 t2) {
		return t1;
	}
};


class TestTb1;
class TestTb2;
template class TypeTb{};

template<>
class TypeTb
{
public:
	typedef char ret_type;
	typedef int par1_type;
	typedef double par2_type;
};
template<>
class TypeTb
{
public:
	typedef char ret_tyep;
	typedef double par1_type;
	typedef double par2_type;
};
template
class TypeTbt
{
public:
	typename TypeTb::ret_type change(typename TypeTb::par1_type x, 
		typename TypeTb::par1_type y) {
		return x;
	}
};

int main()
{
	Test tt;
	std::cout << tt.change(67, 22.0) << std::endl;
	TypeTbt tt1;
	std::cout << tt1.change(68, 22.0) << std::endl;


	return 0;

}
example3 
#include 

template 
class Iterator1
{
public:
	typedef T value_type;
	typedef value_type* pointer;
	typedef value_type& reference;
};

template 
class Iterator2
{
public:
	typedef T value_type;
	typedef value_type* pointer;
	typedef value_type& reference;
};

template  struct Traits{};

template 
class Traits
{
public:
	typedef T value_type;
	typedef value_type* pointer;
	typedef value_type& reference;
};

int main()
{
	Iterator1 ::value_type t1 = 100;
	Iterator1::value_type t2 = 3.14;
	Traits::value_type t3 = 1.11;
	std::cout << t1 << std::endl << t2 << std::endl << t3 << std::endl;
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/949860.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号