为什么mystruct( plain_old_function );构造函数不调用默认构造函数,而lambda调用专用的一个(mystruct ( const std::function< std::string() > &func ))?
这可以使用吗?
#include <iostream>
#include <functional>
#include <string>
struct mystruct
{
mystruct() { std::cout << "Default construct :S" << std::endl; }
mystruct ( const std::function< std::string() > &func ) {
std::cout << func() << std::endl;
}
};
void callme ( const std::function< std::string() > &func )
{
std::cout << func() << std::endl;
}
std::string free_function( ) { return "* Free function"; }
int main()
{
std::cout << …Run Code Online (Sandbox Code Playgroud)