如何从C ++函数返回类型?

我正在阅读 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还是更好的解决方案?

wszh453978896 回答:如何从C ++函数返回类型?

您的问题没有道理。此功能:

template<typename T1,typename T2>
std::common_type_t<T1,T2> max (T1 a,T2 b)
{
    return b < a ? a : b;
}

不返回类型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;
}

返回类型int的值,但不返回类型int本身。

如果要编写一个返回其他类型值的函数,例如std::string,请在函数名称之前编写它:

vvvvvvvvvvv here
std::string return_a_string ()
{
    return "hello";
}
本文链接:https://www.f2er.com/2840110.html

大家都在问