4#include <initializer_list>
26 explicit RefVector(
const std::vector<T*>& ptr_vector)
33 for (
size_t i = 0; i < vector.size(); i++) {
38 template <
typename... Ts>
43 template <std::
size_t N>
104 template <
typename ConvertibleFromT>
operator std::vector<ConvertibleFromT>()
const
106 std::vector<ConvertibleFromT> ret;
108 ret.push_back(*elem);
140 concatenated.
get_storage().reserve(ref_vector.
size() + (ref_vectors.size() + ...));
142 auto append = [&](
const auto& vec) {
148 (append(ref_vectors), ...);
158 result.push_back(RefVector{ inner });
#define BB_ASSERT_LT(left, right,...)
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
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