Gha*_*ani 1 c++ templates function return-type
我正在阅读C++ Templates: The Complete Guide, 2th Edition,我看到了这个代码:
template<typename T1, typename T2>
std::common_type_t<T1, T2> max (T1 a, T2 b)
{
return b < a ? a : b;
}
Run Code Online (Sandbox Code Playgroud)
根据我从第 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);
...
Run Code Online (Sandbox Code Playgroud)
我想做一个像这样的功能:
Type getFunctionPointer(const std::string& name);
Run Code Online (Sandbox Code Playgroud)
其中取函数指针的名称并返回相应的函数指针。在我找到template
s之前,我认为这是不可能的。但我认为,std::commone_type_t
正是在做我想做的事情。它接受一个变量并返回一个类型(这是该变量的类型)。
我该如何定义?我可以使用std::commone_type_t
或更好的解决方案来实现它templates
吗?
你的问题没有意义。这个功能:
template<typename T1, typename T2>
std::common_type_t<T1, T2> max (T1 a, T2 b)
{
return b < a ? a : b;
}
Run Code Online (Sandbox Code Playgroud)
不返回类型std::common_type_t<T1, T2>
。它返回一个值(a 或 b),该值的类型是std::common_type_t<T1, T2>
。
同样,这个函数:
int max2 (int a, int b)
{
return b < a ? a : b;
}
Run Code Online (Sandbox Code Playgroud)
返回 type 的值int
,但不返回类型int
本身。
如果要编写一个返回其他类型值的函数,例如std::string
,请将其写在函数名之前:
vvvvvvvvvvv here
std::string return_a_string ()
{
return "hello";
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
346 次 |
最近记录: |