gpt4 book ai didi

c++ - 传递模板函数。作为一个功能。 ptr 到一个重载的函数。 - 有没有办法编译这段代码?

转载 作者:行者123 更新时间:2023-11-27 23:33:33 25 4
gpt4 key购买 nike

只是一般的 c++ 好奇心:

下面的代码不应该编译,因为不可能知道要实例化哪个: temp(const int&) 或 temp(const string&) 在调用 func(temp) 时 - 这部分我知道。

我想知道的是,我是否可以对标记为 PASSINGLINE 的行执行任何操作,以使编译器推断出我希望调用 FPTR1 而不是 < b>FPTR2 ?

#include<iostream>
using std::cout;
using std::endl;

/*FPTR1*/ void func(void(*fptr)(const int&)){ fptr(1001001);}

/*FPTR2*/ void func(void(*fptr)(const string&)){ fptr("1001001"); }

template <typename T>
void temp(const T &t){ cout << t << endl; }

int main(){
/*PASSINGLINE*/ func(temp);
return 0;
}

谢谢。

最佳答案

你可以使用一个static_cast:

func (static_cast <void(*)(const int&)> (&temp));

使用 GCC 4.x 测试。

关于c++ - 传递模板函数。作为一个功能。 ptr 到一个重载的函数。 - 有没有办法编译这段代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2985173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com