在c++函数内部调用模板函数



我有类似的情况,但更复杂。我试图调用一个模板函数在一个正常的函数,但我不能编译…

#include <iostream>
using namespace std;
template<class T>
void ioo(T& x) { std::cout << x << "n"; }
template<class T, class ReadFunc>
void f(T&& param, ReadFunc func) {
func(param);
}
int main() {
int x = 1;
std::string y = "something";
f(x, &::ioo);
}

ioo是一个函数模板,而不是一个函数,所以你不能获取它的地址。

这是可以工作的,因为它实例化了函数void ioo<int>(int&):

f(x, &ioo<decltype(x)>);

,正如Jarod42在评论中指出的那样,您可以将其变为lambda:

f(x, [](auto& arg){ioo(arg);});

相关内容

  • 没有找到相关文章

最新更新