If I have
std::function<int()> &&x = [] { return 1; };
auto lambda = [y = x(), x] {
return y * x();
};
What is the type of x inside lambda: std::function<int()>, std::function<int()>& or std::function<int()>&&? And if the first, is the captured x initialized by the move constructor, or by the copy one (and I need [y = x(), x = std::move(x)] to move it instead)?