35 template <
typename T, std::
size_t N >
50 return reinterpret_cast< pointer >( data_ );
60 template <
typename... Args >
62 std::is_nothrow_constructible_v< T, Args... > )
64 return *std::construct_at(
data() + i, std::forward< Args >(
args )... );
71 std::destroy_at(
data() + i );
77 return *(
data() + i );
83 return *(
data() + i );
90 template <
typename T >
92 std::is_trivially_default_constructible_v< T > && std::is_trivially_destructible_v< T >;
94 template <
typename T, std::
size_t N >
98 static constexpr std::size_t capacity =
N;
120 template <
typename... Args >
122 std::is_nothrow_constructible_v< T, Args... > )
124 data_[i] = T{ std::forward< Args >(
args )... };
MIT License.
Definition: impl.h:31
std::size_t size_type
Definition: static_storage.h:105
constexpr pointer data() noexcept
Returns pointer to first item of the storage.
Definition: static_storage.h:108
T const * const_pointer
Definition: static_storage.h:104
T & reference
Definition: static_storage.h:101
constexpr reference operator[](size_type const i) noexcept
Provides a reference to item at position i.
Definition: static_storage.h:136
concept trivial_for_static_storage
Definition: static_storage.h:91
Args const & args
Definition: min_max.h:83
T * pointer
Definition: static_storage.h:103
T value_type
Definition: static_storage.h:100
constexpr T & emplace_item(size_type const i, Args &&... args) noexcept(std::is_nothrow_constructible_v< T, Args... >)
Constructs an item at position i with arguments args...
Definition: static_storage.h:121
requires(!range_container< Container >) const expr std
Returns index of an element in tuple 't', for which call to predicate f(x) holds true,...
Definition: algorithm.h:127
constexpr void delete_item(size_type const i) noexcept(std::is_nothrow_destructible_v< T >)
Deconstructs an item at position i.
Definition: static_storage.h:130
T const & const_reference
Definition: static_storage.h:102
N
Definition: static_storage.h:97
physical_quantity< 0, 0, 0, 0, 0, 0, 0, 0, 1 > byte
Definition: physical_quantity.h:118
Continuous data container that can contain N of uninitialized elements.
Definition: static_storage.h:37
T const & const_reference
Definition: static_storage.h:42
constexpr reference operator[](size_type const i) noexcept
Provides a reference to item at position i.
Definition: static_storage.h:75
static constexpr std::size_t capacity
Definition: static_storage.h:38
T * pointer
Definition: static_storage.h:43
T const * const_pointer
Definition: static_storage.h:44
std::size_t size_type
Definition: static_storage.h:45
constexpr T & emplace_item(size_type const i, Args &&... args) noexcept(std::is_nothrow_constructible_v< T, Args... >)
Constructs an item at position i with arguments args...
Definition: static_storage.h:61
constexpr const_pointer data() const noexcept
Returns pointer to first item of the storage.
Definition: static_storage.h:54
constexpr pointer data() noexcept
Returns pointer to first item of the storage.
Definition: static_storage.h:48
constexpr const_reference operator[](size_type const i) const noexcept
Provides a reference to item at position i.
Definition: static_storage.h:81
T & reference
Definition: static_storage.h:41
T value_type
Definition: static_storage.h:40
constexpr void delete_item(size_type const i) noexcept(std::is_nothrow_destructible_v< T >)
Deconstructs an item at position i.
Definition: static_storage.h:69