di 0.1.0
Loading...
Searching...
No Matches
clone_impl.h
Go to the documentation of this file.
1#pragma once
2
4#include "di/util/clone.h"
5
6namespace di::util::detail {
7template<concepts::ReflectableToFields T>
8constexpr auto tag_invoke(types::Tag<clone>, T const& object) -> T {
9 auto result = T {};
11 [&](auto field) {
12 field.get(result) = clone(field.get(object));
13 },
14 reflect(object));
15 return result;
16}
17}
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
constexpr auto clone
Definition clone.h:39
constexpr void tuple_for_each(F &&function, Tup &&tuple)
Definition tuple_for_each.h:22
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
constexpr auto reflect
Definition reflect.h:47
constexpr auto field
Definition field.h:47