为什么这段代码会编译?
std::function<void(const int&)> f = [](int a)
{
};
Run Code Online (Sandbox Code Playgroud)
不是int和const int&不同的类型?
Pix*_*ist 16
您的代码工作的原因是std::function<R(Args...)>获取任意函数对象的模板化构造函数F需要F在Args...返回时可调用R.
Run Code Online (Sandbox Code Playgroud)template<class R, class... ArgTypes> class function<R(ArgTypes...)> { template<class F> function(F f); };要求:
F应为CopyConstructible.对于参数类型和返回类型,f应为CallableArgTypesR.[...]
函数对象int使用是可调用的const int&,因此该代码有效并且满足要求,因为两者都返回void.
| 归档时间: |
|
| 查看次数: |
1117 次 |
| 最近记录: |