#include <functional>

template<typename T>
class Value {
    std::function<T()> get;    
public:
    
    template<class Y>
    Value(Y lambda ) : get( std::move( lambda ) )  {}
};

int main()
{
	Value<double> d = [] { return 1.; };
}