#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.; };
}
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpjbGFzcyBWYWx1ZSB7CiAgICBzdGQ6OmZ1bmN0aW9uPFQoKT4gZ2V0OyAgICAKcHVibGljOgogICAgCiAgICB0ZW1wbGF0ZTxjbGFzcyBZPgogICAgVmFsdWUoWSBsYW1iZGEgKSA6IGdldCggc3RkOjptb3ZlKCBsYW1iZGEgKSApICB7fQp9OwoKaW50IG1haW4oKQp7CglWYWx1ZTxkb3VibGU+IGQgPSBbXSB7IHJldHVybiAxLjsgfTsKfQ==