相关疑难解决方法(0)

通过值(?)而不是函数指针传递函数?

对不起,如果之前已经询问过,但我找不到它.

因此,我试图教自己关于模板和新的C++ 11功能(主要是lambdas,我一直喜欢的其他语言).

但是在我的测试中,我找到了一些我不知道它有效的东西,我试图理解它是如何工作的,但是无法弄清楚它.

以下代码:

template <class Func>
void Test( Func callback ) {
    callback( 3 );
}

void Callback( int i ) {
    std::cout << i << std::endl;
}

int main( int argc, char** argv ) {
    Test( &Callback ); // this I was expecting to work, compiler will see its a pointer to a function
    Test( Callback ); // this also works, but how?!
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我理解模板是如何工作的,基本上它们是编译器知道要构建什么的方案,所以第一次调用Test( &Callback );我期望工作,因为编译器将看到模板接收函数地址并假设参数应该是指针.

但是第二个电话是什么?假设是什么模板?一个函数的副本(如果它甚至有意义)?

c++ templates function c++11

10
推荐指数
1
解决办法
1774
查看次数

标签 统计

c++ ×1

c++11 ×1

function ×1

templates ×1