ActiveLib
Loading...
Searching...
No Matches
Mover.h
1
6#ifndef ACTIVE_UTILITY_MOVER
7#define ACTIVE_UTILITY_MOVER
8
9#include <concepts>
10#include <memory>
11
12namespace active::utility {
13
17 class Mover {
18 public:
22 virtual ~Mover() = default;
27 virtual Mover* movePtr() = 0;
28 };
29
30
32 template<class T>
33 concept Movable = std::is_base_of<Mover, T>::value;
34
35
41 template<class T> requires Movable<T>
42 inline auto cloneMove(T&& item) {
43 return std::unique_ptr<T>{item.movePtr()};
44 }
45
46}
47
48#endif //ACTIVE_UTILITY_MOVER
Definition Mover.h:17
virtual Mover * movePtr()=0
virtual ~Mover()=default
Movable concept for classes/functions dependent on cloning with a move.
Definition Mover.h:33
Definition Base64Transport.h:11
auto cloneMove(T &&item)
Definition Mover.h:42