std::function<>f 参数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dd135373/article/details/40865347

void FUNC( std::function <TYPE1 (TYPE2 n,...)  f >) 

{

printf("FIRST");

f(n);

}

->FUNC( [] ( TYPE n , ...) {  printf("SECOND"); )

output:FIRST

output:SECOND

TYPE1 "f" return type,

TYPE2 "n" type;

f = [](TYPE n,...){ printf("SECOND");}

阅读更多
换一批

【讨论】if(function f())console.log(f);

04-12

[code=javascript]if(function f())console.log(f);[/code]rn最开始我以为会出现function f(),结果却是f is not defined,同样情况,适用于while,switch,forrnJS中没有块级作用域(花括号内),而是使用了函数作用域(函数体内),这是权威指南里的讲的rn所以我的理解,if()是没有自己的作用域的,但是按照这个例子来看,if是有自己的作用域的,或者说[color=#FF0000]()有自己的作用域[/color],就是()内(不知道这么说准不准确,虽然好像没有什么实际用处,而且if(function f())这种写法貌似也没有什么实际意义)rn按照这个理解测试了一下for:rn[code=javascript]var i = 0;for(function f()i++;;i<5;f())console.log(i)[/code]rn没想到结果仍然是f is not defined,不是很理解rnstackoverflow上找到了[url=http://stackoverflow.com/questions/14218779/function-names-defined-as-parameters-to-a-function-call-arent-hoisted-why-not][/url]rn我的英文很差,所以只能大概理解里面的回答,跟函数声明和函数表达式有关系,另外跟()也是有关系的rn但是,我仍然不能理解for循环的情况,毕竟如果是正常情况下:rn[code=javascript]function f();f()[/code]rn是没有问题的,那为什么加到for循环中出现找不到f呢?思考了一会想到for的运算流程rn[code=javascript]for ([initialization]; [condition]; [expression])rn statement[/code]rn进入for后是initialization-->condition-->statement-->expression-->condition-->statement...rn也就是说是先进入了statement之后才会运算expression,而在上面的测试代码中,第一次进入statement时就已经找不到函数f了,因为在()外面,所以再运算expression时会提示f is not definedrn好吧,至此疑问解开,虽然不知道理解的对不对,但是勉强说服自己了[img=http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/2.gif][/img]

没有更多推荐了,返回首页