Iros
 
Loading...
Searching...
No Matches
bit_tag.h
Go to the documentation of this file.
1#pragma once
2
4#include "di/meta/core.h"
6#include "di/types/prelude.h"
7#include "di/util/declval.h"
8
9namespace di::meta {
10template<typename T>
11requires(requires { typename T::Value; })
12using BitValue = T::Value;
13}
14
15namespace di::concepts {
16template<typename T>
17concept BitTag =
18 requires { typename meta::BitValue<T>; } && requires(meta::BitValue<T> value, BitSet<0> bitset, T const tag) {
19 T::value_into_bits(bitset, value);
20 { T::bits_into_value(bitset) } -> SameAs<meta::BitValue<T>>;
21 { tag.get() } -> SameAs<meta::BitValue<T>>;
23}
Definition bit_set.h:11
Definition bit_tag.h:17
Definition operations.h:11
Definition any_storable.h:9
Definition merge_interfaces.h:6
T::Value BitValue
Definition bit_tag.h:12