C++ 类型定义不清楚

C++ type definition unclear

在下面的 C++ 代码中,double (*) double 是什么意思? return是什么类型的?

auto get_fun(int arg) -> double (*)(double) // same as: double (*get_fun(int))(double)
{
    switch (arg)
    {
        case 1: return std::fabs;
        case 2: return std::sin;
        default: return std::cos;
    }
}

double (*)(double) 它是一个函数指针签名,用于接受一个 double 参数和 returns double 的函数。一般

X (*)(A, B, C)  // any number of args

是一个指向函数的指针,它接受 (A, B, C) 类型的参数和 X 类型的 returns 值,例如

X my_func(A, B, C) {
    return X();  // assuming this makes sense
}

就是上面的签名。

所以在你的例子中 get_fun 是一个函数,returns 是一个函数指针。

double (*)(double) 是表示接受 double 并返回 double.

的函数指针的类型