c++模板移除引用

背景

  • 一个函数内部需将函数内的一个变量转为其参数的类型, 函数的参数是引用
  • 本文要演示的环境需要c++11支持(使用了新的关键字 using)
  • 例如 get_value 内部将dobuble类型数据转为 int.
void get_value(int & out_value)
{
	/// 测试数据
	double query_result	= 1.234;

	/// 得到参数的类型
	using out_value_type	= remove_ref<decltype(out_value)>::type;

	/// 执行转换
	out_value	= static_cast<out_value_type>(query_result);
}

模板

  • 使用下面的模板可得到参数的类型
template<typename T>
class remove_ref
{
public:
	typedef T type;
};


template<typename T>
class remove_ref<T&>
{
public:
	typedef T type;
};

用法范例

	int int_value = 0;
	get_value(int_value);

结果

扩展

  • get_value ,这里演示的是double 数据类型,如果是其他类型(int, char unsigned char......),用这样的方式可支持多种数据类型。 好处多多.
posted @ 2021-07-29 22:57  mohist  阅读(267)  评论(0编辑  收藏  举报