namespace detail {
-template<class Func>
+template <class Func>
struct Lazy {
typedef typename std::result_of<Func()>::type result_type;
//////////////////////////////////////////////////////////////////////
-template<class Func>
+template <class Func>
detail::Lazy<typename std::remove_reference<Func>::type>
lazy(Func&& fun) {
return detail::Lazy<typename std::remove_reference<Func>::type>(