C++ 我可以在另一个使用C+;的函数中获取函数信息(返回/参数类型)吗+;?

C++ 我可以在另一个使用C+;的函数中获取函数信息(返回/参数类型)吗+;?,c++,function,c++11,types,C++,Function,C++11,Types,请参见下面的演示代码: string foo(double a, double b) { //... } void goo(foo) { // ... do something base on string/double/double of foo } 我想在 Goo< /Cube中做一些事情,基于 Foo的返回/参数类型,如何用C++ +/P> 一种可能的方法是在模板类对象中绑定foo和goo 在我的实际案例中,foo和goo不是同时确定的,这意味着您不能将它们绑定在一起。假设您通

请参见下面的演示代码:

string foo(double a, double b) {
  //...
}

void goo(foo) {
  // ... do something base on string/double/double of foo
}
<>我想在<代码> Goo< /Cube中做一些事情,基于<代码> Foo的返回/参数类型,如何用C++ +/P> 一种可能的方法是在模板类对象中绑定
foo
goo


在我的实际案例中,
foo
goo
不是同时确定的,这意味着您不能将它们绑定在一起。

假设您通过指针传递
foo
,您可以使用模板:

template<typename R>
void bar(R (*func)(double, double))
{
    // Do something with func
    // example:
    R variable = func(3.14, 42);
    std::cout << variable;
}
也可以基于
R
进行一些元编程。请注意,您也可以对函数参数使用模板:

template<typename R, typename P1, typename P2>
void bar(R (*func)(P1, P2))
{
    // ...
}
模板
空栏(R(*func)(P1、P2))
{
// ...
}

由于typedef
func
,返回类型必须是
string
。我误解了你的问题吗?@JosephMansfield foo可以是任何返回/参数类型,但只有两个输入参数“在我的实际情况中,foo和goo不是同时确定的”,这是否意味着
foo
在你遵守
goo
后可以更改?存在
decltype
,但它要求
foo
的定义在遵守
goo
时可见。是否希望
goo
可以接受任何只接受2个参数的函数指针?
template<typename R, typename P1, typename P2>
void bar(R (*func)(P1, P2))
{
    // ...
}