4#include <initializer_list>
27 explicit RefVector(
const std::vector<T*>& ptr_vector)
34 for (
size_t i = 0; i < vector.size(); i++) {
39 template <
typename... Ts>
44 template <std::
size_t N>
115 template <
typename ConvertibleFromT>
operator std::vector<ConvertibleFromT>()
const
117 std::vector<ConvertibleFromT> ret;
119 ret.push_back(*elem);
151 concatenated.
get_storage().reserve(ref_vector.
size() + (ref_vectors.size() + ...));
153 auto append = [&](
const auto& vec) {
159 (append(ref_vectors), ...);
169 result.push_back(RefVector{ inner });
#define ASSERT_DEBUG(expression,...)
A template class for a reference array. Behaves as if std::array<T&, N> was possible.
constexpr std::size_t size() const
Nested iterator class for RefVector, based on indexing into the pointer vector. Provides semantics si...
iterator(RefVector const *vector, std::size_t pos)
Constructs an iterator for a given RefVector object.
bool operator!=(iterator const &other) const
bool operator==(iterator const &other) const
A template class for a reference vector. Behaves as if std::vector<T&> was possible.
RefVector(const std::vector< T * > &ptr_vector)
RefVector(T &first, Ts &... refs)
void push_back(T &element)
std::vector< T * > storage
static RefVector from_span(const std::span< T > &span)
RefVector(std::vector< T > &vector)
T & operator[](std::size_t idx) const
const std::vector< T * > & get_storage() const
RefVector(const RefArray< T, N > &ref_array)
std::vector< T * > & get_storage()
Entry point for Barretenberg command-line interface.
RefArray< T,(Ns+...)> constexpr concatenate(const RefArray< T, Ns > &... ref_arrays)
Concatenates multiple RefArray objects into a single RefArray.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept