作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
只是一般的 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/
我是一名优秀的程序员,十分优秀!