把模板作为元函数参数传递。

发布时间:2024年01月15日
????????
????????C++模板元编程是一种典型的函数式编程,函数在整个编程体系中处于核心的地位。
?? ?
这里的函数与一般C++程序中定义的函数有所区别,其更接近数学意义上的函
数——是无副作用的映射或变换:在输入相同的前提下,多次调用同一个函数,得到的结
果是相同的,深度学习框架大量使用C++模板元编程(metaprogramming)技术。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????????????????????????????????????——动手打造深度学习框架
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? C++模板元编程,打造深度学习框架

/// <summary>
/// 以类型传递
/// </summary>
/// <typeparam name="T"></typeparam>
template<typename T>
std::string get_type_ = typeid(T).name();

/// <summary>
/// 以类型传递
/// </summary>
/// <typeparam name="T"></typeparam>
template<typename T>
std::string get_type() { return typeid(T).name(); }


/// <summary>
/// 以 template<tpename T> 模板传递
/// </summary>
template<template<typename T1> typename T2>
std::string get_template_type_ = typeid(T2).name();


/// <summary>
/// 以 template<tpename T> 模板传递
/// </summary>
template<template<typename T1> typename T2>
std::string get_template_type() { return typeid(T2).name(); }



/// <summary>
/// 以 template<typename T1, typename T2> 模板传递
/// </summary>
template<template<typename T1, typename T2> typename T3>
std::string get_template_type2_ = typeid(T3).name();

int main()
{
	std::cout << get_type_<int> << "\n";

	std::cout << get_type<int>() << "\n";

	std::cout << get_template_type_<std::list> << "\n";

	std::cout << get_template_type<std::list>() << "\n";
	 
	std::cout << get_template_type2_<std::list> << "\n";
	std::cout << get_template_type2_<std::pair> << "\n";


	return 0;
}

运行结果:

文章来源:https://blog.csdn.net/weixin_42944928/article/details/135591459
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。