【发布时间】:2018-07-30 12:33:17
【问题描述】:
我可以创建返回std::optional<Foo> 的std::function 并分配返回Foo 的lambda。有人可以详细解释一下这是怎么可能的吗?
简单示例:
#include <iostream>
#include <optional>
#include <functional>
int main()
{
int k = 13;
std::function<std::optional<int>()> f1;
f1 = [&] {return k++;}; //implicite int
std::cout<<"k = " << f1().value() << std::endl;
f1 = [&] () -> int {return k;}; //explicite int
std::cout<<"k = " << f1().value() << std::endl;
}
【问题讨论】:
标签: c++ lambda c++17 std-function