我std::function()
在我的代码中使用 C++11 和 VS2010。这是我的代码。
function<string (string)> myfunc = 3;
myfunc(string());
很明显,代码不正确,因为myfunc
对象没有正确初始化。该myfunc
对象应由function<string (string)>
整数类型以外的对象赋值。当运行到代码时myfunc(string());
,std::function
对象抛出bad_function_call()
并得到错误。
但是,让我困惑的是为什么 C++11 在编译时不检查类型?这很奇怪,因为缺少类型检查会让程序员很容易意外地弄乱代码,直到运行到相应的错误行。
所以我想问一下:std::function()
VS2010中编译C++11代码时是否检查类型?如果没有,有什么办法可以解决这个问题吗?