souffle  2.0.2-371-g6315b36
Public Types | Public Member Functions | Static Public Attributes | Private Types | Private Attributes
TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent > Class Template Reference

#include <span.h>

Collaboration diagram for TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >:
Collaboration graph

Public Types

using const_pointer = const element_type *
 
using const_reference = const element_type &
 
using difference_type = std::ptrdiff_t
 
using element_type = ElementType
 
using iterator = pointer
 
using pointer = element_type *
 
using reference = element_type &
 
using reverse_iterator = std::reverse_iterator< iterator >
 
using size_type = std::size_t
 
template<std::size_t Offset, std::size_t Count = dynamic_extent>
using subspan_return_t = span< ElementType, Count !=dynamic_extent ? Count :(Extent !=dynamic_extent ? Extent - Offset :dynamic_extent)>
 
using value_type = typename std::remove_cv< ElementType >::type
 

Public Member Functions

TCB_SPAN_CONSTEXPR11 reference back () const
 
constexpr iterator begin () const noexcept
 
constexpr pointer data () const noexcept
 
constexpr TCB_SPAN_NODISCARD bool empty () const noexcept
 
constexpr iterator end () const noexcept
 
template<std::size_t Count>
TCB_SPAN_CONSTEXPR11 span< element_type, Count > first () const
 
TCB_SPAN_CONSTEXPR11 span< element_type, dynamic_extentfirst (size_type count) const
 
TCB_SPAN_CONSTEXPR11 reference front () const
 
template<std::size_t Count>
TCB_SPAN_CONSTEXPR11 span< element_type, Count > last () const
 
TCB_SPAN_CONSTEXPR11 span< element_type, dynamic_extentlast (size_type count) const
 
TCB_SPAN_CONSTEXPR_ASSIGN spanoperator= (const span &other) noexcept=default
 
TCB_SPAN_CONSTEXPR11 reference operator[] (size_type idx) const
 
TCB_SPAN_ARRAY_CONSTEXPR reverse_iterator rbegin () const noexcept
 
TCB_SPAN_ARRAY_CONSTEXPR reverse_iterator rend () const noexcept
 
constexpr size_type size () const noexcept
 
constexpr size_type size_bytes () const noexcept
 
template<std::size_t E = Extent, typename std::enable_if<(E==dynamic_extent||E<=0), int >::type = 0>
constexpr span () noexcept
 
template<typename Container , std::size_t E = Extent, typename std::enable_if< E==dynamic_extent &&detail::is_container< Container >::value &&detail::is_container_element_type_compatible< const Container &, ElementType >::value, int >::type = 0>
constexpr span (const Container &cont)
 
constexpr span (const span &other) noexcept=default
 
template<typename OtherElementType , std::size_t OtherExtent, typename std::enable_if<(Extent==OtherExtent||Extent==dynamic_extent) &&std::is_convertible< OtherElementType(*)[], ElementType(*)[]>::value, int >::type = 0>
constexpr span (const span< OtherElementType, OtherExtent > &other) noexcept
 
template<std::size_t N, std::size_t E = Extent, typename std::enable_if<(E==dynamic_extent||N==E) &&detail::is_container_element_type_compatible< const std::array< value_type, N > &, ElementType >::value, int >::type = 0>
TCB_SPAN_ARRAY_CONSTEXPR span (const std::array< value_type, N > &arr) noexcept
 
template<typename Container , std::size_t E = Extent, typename std::enable_if< E==dynamic_extent &&detail::is_container< Container >::value &&detail::is_container_element_type_compatible< Container &, ElementType >::value, int >::type = 0>
constexpr span (Container &cont)
 
template<std::size_t N, std::size_t E = Extent, typename std::enable_if<(E==dynamic_extent||N==E) &&detail::is_container_element_type_compatible< element_type(&)[N], ElementType >::value, int >::type = 0>
constexpr span (element_type(&arr)[N]) noexcept
 
TCB_SPAN_CONSTEXPR11 span (pointer first_elem, pointer last_elem)
 
TCB_SPAN_CONSTEXPR11 span (pointer ptr, size_type count)
 
template<std::size_t N, std::size_t E = Extent, typename std::enable_if<(E==dynamic_extent||N==E) &&detail::is_container_element_type_compatible< std::array< value_type, N > &, ElementType >::value, int >::type = 0>
TCB_SPAN_ARRAY_CONSTEXPR span (std::array< value_type, N > &arr) noexcept
 
template<std::size_t Offset, std::size_t Count = dynamic_extent>
TCB_SPAN_CONSTEXPR11 subspan_return_t< Offset, Count > subspan () const
 
TCB_SPAN_CONSTEXPR11 span< element_type, dynamic_extentsubspan (size_type offset, size_type count=dynamic_extent) const
 
 ~span () noexcept=default
 

Static Public Attributes

static constexpr size_type extent = Extent
 

Private Types

using storage_type = detail::span_storage< ElementType, Extent >
 

Private Attributes

storage_type storage_ {}
 

Detailed Description

template<typename ElementType, std::size_t Extent>
class TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >

Definition at line 163 of file span.h.

Member Typedef Documentation

◆ const_pointer

template<typename ElementType , std::size_t Extent>
using TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::const_pointer = const element_type*

Definition at line 317 of file span.h.

◆ const_reference

template<typename ElementType , std::size_t Extent>
using TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::const_reference = const element_type&

Definition at line 319 of file span.h.

◆ difference_type

template<typename ElementType , std::size_t Extent>
using TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::difference_type = std::ptrdiff_t

Definition at line 315 of file span.h.

◆ element_type

template<typename ElementType , std::size_t Extent>
using TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::element_type = ElementType

Definition at line 312 of file span.h.

◆ iterator

template<typename ElementType , std::size_t Extent>
using TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::iterator = pointer

Definition at line 320 of file span.h.

◆ pointer

template<typename ElementType , std::size_t Extent>
using TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::pointer = element_type*

Definition at line 316 of file span.h.

◆ reference

template<typename ElementType , std::size_t Extent>
using TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::reference = element_type&

Definition at line 318 of file span.h.

◆ reverse_iterator

template<typename ElementType , std::size_t Extent>
using TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::reverse_iterator = std::reverse_iterator<iterator>

Definition at line 321 of file span.h.

◆ size_type

template<typename ElementType , std::size_t Extent>
using TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::size_type = std::size_t

Definition at line 314 of file span.h.

◆ storage_type

template<typename ElementType , std::size_t Extent>
using TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::storage_type = detail::span_storage<ElementType, Extent>
private

Definition at line 308 of file span.h.

◆ subspan_return_t

template<typename ElementType , std::size_t Extent>
template<std::size_t Offset, std::size_t Count = dynamic_extent>
using TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::subspan_return_t = span<ElementType, Count != dynamic_extent ? Count : (Extent != dynamic_extent ? Extent - Offset : dynamic_extent)>

Definition at line 434 of file span.h.

◆ value_type

template<typename ElementType , std::size_t Extent>
using TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::value_type = typename std::remove_cv<ElementType>::type

Definition at line 313 of file span.h.

Constructor & Destructor Documentation

◆ span() [1/10]

template<typename ElementType , std::size_t Extent>
template<std::size_t E = Extent, typename std::enable_if<(E==dynamic_extent||E<=0), int >::type = 0>
constexpr TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::span ( )
inlineconstexprnoexcept

Definition at line 329 of file span.h.

330  {}

◆ span() [2/10]

template<typename ElementType , std::size_t Extent>
TCB_SPAN_CONSTEXPR11 TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::span ( pointer  ptr,
size_type  count 
)
inline

Definition at line 332 of file span.h.

333  : storage_(ptr, count)
334  {
336  }

References souffle::test::count(), TCB_SPAN_NAMESPACE_NAME::dynamic_extent, TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::extent, and TCB_SPAN_EXPECT.

Here is the call graph for this function:

◆ span() [3/10]

template<typename ElementType , std::size_t Extent>
TCB_SPAN_CONSTEXPR11 TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::span ( pointer  first_elem,
pointer  last_elem 
)
inline

Definition at line 338 of file span.h.

339  : storage_(first_elem, last_elem - first_elem)
340  {
342  last_elem - first_elem ==
343  static_cast<std::ptrdiff_t>(extent));
344  }

References TCB_SPAN_NAMESPACE_NAME::dynamic_extent, TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::extent, and TCB_SPAN_EXPECT.

◆ span() [4/10]

template<typename ElementType , std::size_t Extent>
template<std::size_t N, std::size_t E = Extent, typename std::enable_if<(E==dynamic_extent||N==E) &&detail::is_container_element_type_compatible< element_type(&)[N], ElementType >::value, int >::type = 0>
constexpr TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::span ( element_type(&)  arr[N])
inlineconstexprnoexcept

Definition at line 352 of file span.h.

352  : storage_(arr, N)
353  {}

◆ span() [5/10]

template<typename ElementType , std::size_t Extent>
template<std::size_t N, std::size_t E = Extent, typename std::enable_if<(E==dynamic_extent||N==E) &&detail::is_container_element_type_compatible< std::array< value_type, N > &, ElementType >::value, int >::type = 0>
TCB_SPAN_ARRAY_CONSTEXPR TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::span ( std::array< value_type, N > &  arr)
inlinenoexcept

Definition at line 361 of file span.h.

362  : storage_(arr.data(), N)
363  {}

◆ span() [6/10]

template<typename ElementType , std::size_t Extent>
template<std::size_t N, std::size_t E = Extent, typename std::enable_if<(E==dynamic_extent||N==E) &&detail::is_container_element_type_compatible< const std::array< value_type, N > &, ElementType >::value, int >::type = 0>
TCB_SPAN_ARRAY_CONSTEXPR TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::span ( const std::array< value_type, N > &  arr)
inlinenoexcept

Definition at line 371 of file span.h.

372  : storage_(arr.data(), N)
373  {}

◆ span() [7/10]

template<typename ElementType , std::size_t Extent>
template<typename Container , std::size_t E = Extent, typename std::enable_if< E==dynamic_extent &&detail::is_container< Container >::value &&detail::is_container_element_type_compatible< Container &, ElementType >::value, int >::type = 0>
constexpr TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::span ( Container &  cont)
inlineconstexpr

Definition at line 382 of file span.h.

383  : storage_(detail::data(cont), detail::size(cont))
384  {}

◆ span() [8/10]

template<typename ElementType , std::size_t Extent>
template<typename Container , std::size_t E = Extent, typename std::enable_if< E==dynamic_extent &&detail::is_container< Container >::value &&detail::is_container_element_type_compatible< const Container &, ElementType >::value, int >::type = 0>
constexpr TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::span ( const Container &  cont)
inlineconstexpr

Definition at line 393 of file span.h.

394  : storage_(detail::data(cont), detail::size(cont))
395  {}

◆ span() [9/10]

template<typename ElementType , std::size_t Extent>
constexpr TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::span ( const span< ElementType, Extent > &  other)
constexprdefaultnoexcept

◆ span() [10/10]

template<typename ElementType , std::size_t Extent>
template<typename OtherElementType , std::size_t OtherExtent, typename std::enable_if<(Extent==OtherExtent||Extent==dynamic_extent) &&std::is_convertible< OtherElementType(*)[], ElementType(*)[]>::value, int >::type = 0>
constexpr TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::span ( const span< OtherElementType, OtherExtent > &  other)
inlineconstexprnoexcept

Definition at line 405 of file span.h.

406  : storage_(other.data(), other.size())
407  {}

◆ ~span()

template<typename ElementType , std::size_t Extent>
TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::~span ( )
defaultnoexcept

Member Function Documentation

◆ back()

template<typename ElementType , std::size_t Extent>
TCB_SPAN_CONSTEXPR11 reference TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::back ( ) const
inline

Definition at line 494 of file span.h.

495  {
497  return *(data() + (size() - 1));
498  }

References TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::data(), TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::empty(), TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::size(), and TCB_SPAN_EXPECT.

Here is the call graph for this function:

◆ begin()

template<typename ElementType , std::size_t Extent>
constexpr iterator TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::begin ( ) const
inlineconstexprnoexcept

Definition at line 503 of file span.h.

503 { return data(); }

References TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::data().

Referenced by TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::rend().

Here is the call graph for this function:

◆ data()

template<typename ElementType , std::size_t Extent>
constexpr pointer TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::data ( ) const
inlineconstexprnoexcept

◆ empty()

template<typename ElementType , std::size_t Extent>
constexpr TCB_SPAN_NODISCARD bool TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::empty ( ) const
inlineconstexprnoexcept

Definition at line 476 of file span.h.

477  {
478  return size() == 0;
479  }

References TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::size().

Referenced by TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::back(), and TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::front().

Here is the call graph for this function:

◆ end()

template<typename ElementType , std::size_t Extent>
constexpr iterator TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::end ( ) const
inlineconstexprnoexcept

Definition at line 505 of file span.h.

505 { return data() + size(); }

References TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::data(), and TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::size().

Referenced by TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::rbegin().

Here is the call graph for this function:

◆ first() [1/2]

template<typename ElementType , std::size_t Extent>
template<std::size_t Count>
TCB_SPAN_CONSTEXPR11 span<element_type, Count> TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::first ( ) const
inline

Definition at line 416 of file span.h.

417  {
418  TCB_SPAN_EXPECT(Count <= size());
419  return {data(), Count};
420  }

References TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::data(), TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::size(), and TCB_SPAN_EXPECT.

Here is the call graph for this function:

◆ first() [2/2]

template<typename ElementType , std::size_t Extent>
TCB_SPAN_CONSTEXPR11 span<element_type, dynamic_extent> TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::first ( size_type  count) const
inline

Definition at line 446 of file span.h.

447  {
448  TCB_SPAN_EXPECT(count <= size());
449  return {data(), count};
450  }

References souffle::test::count(), TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::data(), TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::size(), and TCB_SPAN_EXPECT.

Here is the call graph for this function:

◆ front()

template<typename ElementType , std::size_t Extent>
TCB_SPAN_CONSTEXPR11 reference TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::front ( ) const
inline

Definition at line 488 of file span.h.

489  {
491  return *data();
492  }

References TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::data(), TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::empty(), and TCB_SPAN_EXPECT.

Here is the call graph for this function:

◆ last() [1/2]

template<typename ElementType , std::size_t Extent>
template<std::size_t Count>
TCB_SPAN_CONSTEXPR11 span<element_type, Count> TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::last ( ) const
inline

Definition at line 423 of file span.h.

424  {
425  TCB_SPAN_EXPECT(Count <= size());
426  return {data() + (size() - Count), Count};
427  }

References TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::data(), TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::size(), and TCB_SPAN_EXPECT.

Here is the call graph for this function:

◆ last() [2/2]

template<typename ElementType , std::size_t Extent>
TCB_SPAN_CONSTEXPR11 span<element_type, dynamic_extent> TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::last ( size_type  count) const
inline

Definition at line 453 of file span.h.

454  {
455  TCB_SPAN_EXPECT(count <= size());
456  return {data() + (size() - count), count};
457  }

References souffle::test::count(), TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::data(), TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::size(), and TCB_SPAN_EXPECT.

Here is the call graph for this function:

◆ operator=()

template<typename ElementType , std::size_t Extent>
TCB_SPAN_CONSTEXPR_ASSIGN span& TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::operator= ( const span< ElementType, Extent > &  other)
defaultnoexcept

◆ operator[]()

template<typename ElementType , std::size_t Extent>
TCB_SPAN_CONSTEXPR11 reference TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::operator[] ( size_type  idx) const
inline

Definition at line 482 of file span.h.

483  {
484  TCB_SPAN_EXPECT(idx < size());
485  return *(data() + idx);
486  }

References TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::data(), TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::size(), and TCB_SPAN_EXPECT.

Here is the call graph for this function:

◆ rbegin()

template<typename ElementType , std::size_t Extent>
TCB_SPAN_ARRAY_CONSTEXPR reverse_iterator TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::rbegin ( ) const
inlinenoexcept

Definition at line 507 of file span.h.

508  {
509  return reverse_iterator(end());
510  }

References TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::end().

Here is the call graph for this function:

◆ rend()

template<typename ElementType , std::size_t Extent>
TCB_SPAN_ARRAY_CONSTEXPR reverse_iterator TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::rend ( ) const
inlinenoexcept

Definition at line 512 of file span.h.

513  {
514  return reverse_iterator(begin());
515  }

References TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::begin().

Here is the call graph for this function:

◆ size()

template<typename ElementType , std::size_t Extent>
constexpr size_type TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::size ( ) const
inlineconstexprnoexcept

◆ size_bytes()

template<typename ElementType , std::size_t Extent>
constexpr size_type TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::size_bytes ( ) const
inlineconstexprnoexcept

Definition at line 471 of file span.h.

472  {
473  return size() * sizeof(element_type);
474  }

References TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::size().

Referenced by TCB_SPAN_NAMESPACE_NAME::as_bytes(), and TCB_SPAN_NAMESPACE_NAME::as_writable_bytes().

Here is the call graph for this function:

◆ subspan() [1/2]

template<typename ElementType , std::size_t Extent>
template<std::size_t Offset, std::size_t Count = dynamic_extent>
TCB_SPAN_CONSTEXPR11 subspan_return_t<Offset, Count> TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::subspan ( ) const
inline

Definition at line 437 of file span.h.

438  {
439  TCB_SPAN_EXPECT(Offset <= size() &&
440  (Count == dynamic_extent || Offset + Count <= size()));
441  return {data() + Offset,
442  Count != dynamic_extent ? Count : size() - Offset};
443  }

References TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::data(), TCB_SPAN_NAMESPACE_NAME::dynamic_extent, TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::size(), and TCB_SPAN_EXPECT.

Here is the call graph for this function:

◆ subspan() [2/2]

template<typename ElementType , std::size_t Extent>
TCB_SPAN_CONSTEXPR11 span<element_type, dynamic_extent> TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::subspan ( size_type  offset,
size_type  count = dynamic_extent 
) const
inline

Definition at line 460 of file span.h.

461  {
462  TCB_SPAN_EXPECT(offset <= size() &&
463  (count == dynamic_extent || offset + count <= size()));
464  return {data() + offset,
465  count == dynamic_extent ? size() - offset : count};
466  }

References souffle::test::count(), TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::data(), TCB_SPAN_NAMESPACE_NAME::dynamic_extent, TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::size(), and TCB_SPAN_EXPECT.

Here is the call graph for this function:

Field Documentation

◆ extent

template<typename ElementType , std::size_t Extent>
constexpr size_type TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::extent = Extent
staticconstexpr

Definition at line 323 of file span.h.

Referenced by TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::span().

◆ storage_

template<typename ElementType , std::size_t Extent>
storage_type TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::storage_ {}
private

The documentation for this class was generated from the following file:
TCB_SPAN_NAMESPACE_NAME::detail::span_storage::size
static constexpr std::size_t size
Definition: span.h:176
TCB_SPAN_NAMESPACE_NAME::detail::size
constexpr auto size(const C &c) -> decltype(c.size())
Definition: span.h:198
TCB_SPAN_NAMESPACE_NAME::dynamic_extent
constexpr TCB_SPAN_INLINE_VAR std::size_t dynamic_extent
Definition: span.h:160
TCB_SPAN_NAMESPACE_NAME::span::reverse_iterator
std::reverse_iterator< iterator > reverse_iterator
Definition: span.h:321
TCB_SPAN_NAMESPACE_NAME::span::storage_
storage_type storage_
Definition: span.h:518
TCB_SPAN_NAMESPACE_NAME::detail::span_storage::ptr
E * ptr
Definition: span.h:175
TCB_SPAN_NAMESPACE_NAME::span::size
constexpr size_type size() const noexcept
Definition: span.h:469
TCB_SPAN_NAMESPACE_NAME::span::begin
constexpr iterator begin() const noexcept
Definition: span.h:503
souffle::test::count
int count(const C &c)
Definition: table_test.cpp:40
TCB_SPAN_NAMESPACE_NAME::span::element_type
ElementType element_type
Definition: span.h:312
TCB_SPAN_NAMESPACE_NAME::span::end
constexpr iterator end() const noexcept
Definition: span.h:505
TCB_SPAN_NAMESPACE_NAME::span::empty
constexpr TCB_SPAN_NODISCARD bool empty() const noexcept
Definition: span.h:476
TCB_SPAN_NAMESPACE_NAME::detail::data
constexpr auto data(C &c) -> decltype(c.data())
Definition: span.h:210
TCB_SPAN_EXPECT
#define TCB_SPAN_EXPECT(cond)
Definition: span.h:97
TCB_SPAN_NAMESPACE_NAME::span::data
constexpr pointer data() const noexcept
Definition: span.h:500
TCB_SPAN_NAMESPACE_NAME::span::extent
static constexpr size_type extent
Definition: span.h:323