xml*_*lmx 3 c++ constructor function type-conversion c++11
#include <functional>
#include <string>
using namespace std;
int main()
{
function<long(const string&, size_t, int)> fn = stol;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码无法按预期编译,并出现以下错误:
错误:没有用于初始化'std :: function <long(const std :: string&,std :: size_t,int)>'的匹配构造函数(又名'function <long(const basic_string <char,char_traits <char>,allocator) <char >> &&,unsigned long long,int)>')
两个原因:
std::stol
有类型的第二个参数std::size_t*
,而不是std::size_t
.std::stol
重载也接受const std::wstring&
作为它的第一个参数.你必须写:
function<long(const string&, size_t*, int)> fn =
static_cast<long(*)(const string&, size_t*, int)>(stol);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
198 次 |
最近记录: |