Bitcoin Core  0.20.99
P2P Digital Currency
Classes | Macros | Functions
span.h File Reference
#include <type_traits>
#include <cstddef>
#include <algorithm>
#include <assert.h>
Include dependency graph for span.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  Span< C >
 A Span is an object that can refer to a contiguous sequence of objects. More...
 

Macros

#define CONSTEXPR_IF_NOT_DEBUG   constexpr
 
#define ASSERT_IF_DEBUG(x)
 

Functions

template<typename A , int N>
Span< A > constexpr MakeSpan (A(&a)[N])
 MakeSpan for arrays: More...
 
template<typename V >
constexpr auto MakeSpan (V &&v) -> typename std::enable_if<!std::is_lvalue_reference< V >::value, Span< const typename std::remove_pointer< decltype(v.data())>::type >>::type
 MakeSpan for temporaries / rvalue references, only supporting const output. More...
 
template<typename V >
constexpr auto MakeSpan (V &v) -> Span< typename std::remove_pointer< decltype(v.data())>::type >
 MakeSpan for (lvalue) references, supporting mutable output. More...
 
template<typename T >
T & SpanPopBack (Span< T > &span)
 Pop the last element off a span, and return a reference to that element. More...
 

Macro Definition Documentation

◆ ASSERT_IF_DEBUG

#define ASSERT_IF_DEBUG (   x)

Definition at line 18 of file span.h.

◆ CONSTEXPR_IF_NOT_DEBUG

#define CONSTEXPR_IF_NOT_DEBUG   constexpr

Definition at line 17 of file span.h.

Function Documentation

◆ MakeSpan() [1/3]

template<typename A , int N>
Span<A> constexpr MakeSpan ( A(&)  a[N])

MakeSpan for arrays:

Definition at line 192 of file span.h.

Here is the caller graph for this function:

◆ MakeSpan() [2/3]

template<typename V >
constexpr auto MakeSpan ( V &&  v) -> typename std::enable_if<!std::is_lvalue_reference<V>::value, Span<const typename std::remove_pointer<decltype(v.data())>::type>>::type

MakeSpan for temporaries / rvalue references, only supporting const output.

Definition at line 194 of file span.h.

◆ MakeSpan() [3/3]

template<typename V >
constexpr auto MakeSpan ( V &  v) -> Span<typename std::remove_pointer<decltype(v.data())>::type>

MakeSpan for (lvalue) references, supporting mutable output.

Definition at line 196 of file span.h.

◆ SpanPopBack()

template<typename T >
T& SpanPopBack ( Span< T > &  span)

Pop the last element off a span, and return a reference to that element.

Definition at line 200 of file span.h.

Here is the call graph for this function:
Here is the caller graph for this function: