Iros
 
Loading...
Searching...
No Matches
forward_as_base.h
Go to the documentation of this file.
1#pragma once
2
3#include "di/meta/core.h"
4#include "di/meta/language.h"
6#include "di/meta/util.h"
8
9namespace di::util {
10template<typename Derived, typename Base>
11requires(concepts::DerivedFrom<meta::RemoveCVRef<Derived>, Base>)
15 return di::forward_like<meta::RemoveReference<Derived>&>(static_cast<Base const&>(derived));
16 } else {
17 return di::forward_like<meta::RemoveReference<Derived>&>(static_cast<Base&>(derived));
18 }
19}
20
21template<typename Derived, typename Base>
26 return di::forward_like<meta::RemoveReference<Derived>&&>(static_cast<Base const&>(derived));
27 } else {
28 return di::forward_like<meta::RemoveReference<Derived>&&>(static_cast<Base&>(derived));
29 }
30}
31}
32
33namespace di {
35}
Definition language.h:18
Definition operations.h:114
Type< detail::LikeHelper< T, U > > Like
Definition language.h:468
Type< detail::RemoveReferenceHelper< T > > RemoveReference
Definition core.h:71
Definition vocab.h:96
constexpr auto forward_as_base(meta::RemoveReference< Derived > &derived) -> meta::Like< meta::RemoveReference< Derived > &, Base > &&
Definition forward_as_base.h:12
Definition zstring_parser.h:9
constexpr auto forward_like(U &&value) -> decltype(auto)
Definition forward_like.h:8