我正在阅读 C ++模板:完整指南,第二版,并且我看到以下代码:
template<typename T1,typename T2>
std::common_type_t<T1,T2> max (T1 a,T2 b)
{
return b < a ? a : b;
}
根据我从第12页上读到的内容,我想问一下函数如何计算它想返回的类型?在上面的示例中,max
函数如何计算要返回的类型,并在T1和T2之间进行选择?
我查看了./gcc/libstdc++-v3/include/std/type_traits
:2115 ,但不知道发生了什么。
我要做什么:
我有很多像这样的typedef
ed函数指针:
typedef void (*voidVoid)();
typedef void (*voidInt)(int);
typedef void (*voidDouble)(double);
...
我想做一个像这样的函数
Type getFunctionPointer(const std::string& name);
使用功能指针的名称并返回相应的功能指针。在我发现template
之前,我认为这是不可能的。但是我认为std::commone_type_t
确实在做我想做的事。它接受一个变量并返回一个类型(该变量的类型)。
我该如何定义?可以仅使用std::commone_type_t
来实现templates
还是更好的解决方案?