19template <
typename Func>
 
   20class LazyPrvalue final {
 
   21  static_assert(!std::is_reference_v<Func>);
 
   24  constexpr explicit LazyPrvalue(
const Func& func) : func_(func) {}
 
   26  constexpr explicit LazyPrvalue(Func&& func) : func_(std::move(func)) {}
 
   28  LazyPrvalue(LazyPrvalue&&) = 
delete;
 
   29  LazyPrvalue& operator=(LazyPrvalue&&) = 
delete;
 
   31  constexpr  operator std::invoke_result_t<Func&&>() && {
 
   32    return std::move(func_)();