|
- #pragma once
-
- #include <asyncpp/core/future/future.h>
-
- #include "directory.h"
-
- namespace asyncpp {
- namespace fs {
- namespace __directory {
-
- template<
- chaining_mode X_mode,
- typename X_self>
- inline auto remove_impl(X_self&& p_self)
- {
- return lazy([self = std::forward<X_self>(p_self)] {
- if (self.handle.exists())
- self.handle.remove(false);
-
- return self; // TODO: use std::forward
- });
- }
-
- } } }
-
- namespace asyncpp {
- namespace fs {
-
- /* directory::remove */
-
- template<chaining_mode X_mode>
- auto directory
- ::remove() &
- {
- return __directory::remove_impl<X_mode>(*this);
- }
-
- template<chaining_mode X_mode>
- auto directory
- ::remove() &&
- {
- static_assert(
- X_mode != ref,
- "Can not store rvalue reference as lvalue reference!");
-
- return __directory::remove_impl<X_mode>(std::move(*this));
- }
-
- } }
|