#pragma once #include "asl/meta/internal/refs.hpp" namespace asl { template concept referenceable = internal::is_referenceable; template concept is_ref = internal::is_ref_helper::lref; template concept is_rref = internal::is_ref_helper::rref; template concept is_any_ref = is_ref || is_rref; template using as_ref_t = internal::as_ref_helper::lvalue; template using as_rref_t = internal::as_ref_helper::rvalue; template using un_ref_t = internal::un_ref_helper::type; #define AslMove(expr_) (static_cast<::asl::as_rref_t<::asl::un_ref_t>>(expr_)) #define AslForward(expr_) (static_cast<::asl::as_rref_t>(expr_)) } // namespace asl