Go to the documentation of this file. 1 #ifndef EAGINE_BUFFER_SIZE_HPP
9 #define EAGINE_BUFFER_SIZE_HPP
13 #include <type_traits>
20 static_assert(std::is_integral_v<S>);
24 constexpr buffer_size() noexcept = default;
26 explicit constexpr buffer_size(S v) noexcept
30 constexpr buffer_size(type_identity<T>,
span_size_t count) noexcept
31 : _v(S(span_size_of<T>() * count)) {}
33 template <
typename T,
typename P,
typename Z>
34 constexpr buffer_size(memory::basic_span<T, P, Z> s) noexcept
35 : _v(S(span_size_of<T>() *
span_size(s.size()))) {}
37 constexpr
auto get() const noexcept -> S {
41 constexpr
operator S() const noexcept {
46 explicit constexpr
operator T()
const {
50 friend constexpr
auto operator+(buffer_size a, buffer_size b) noexcept
58 #endif // EAGINE_BUFFER_SIZE_HPP
std::ptrdiff_t span_size_t
Signed span size type used by eagine.
Definition: types.hpp:36
static constexpr auto span_size(T v) noexcept
Converts argument to span size type.
Definition: types.hpp:59
Common code is placed in this namespace.
Definition: eagine.hpp:21
static auto operator+(const fixed_size_string< N1 > &s1, const fixed_size_string< N2 > &s2) noexcept
Concatenation operator for fixed_size_string.
Definition: fixed_size_str.hpp:135