souffle  2.0.2-371-g6315b36
Data Structures | Typedefs | Functions
TCB_SPAN_NAMESPACE_NAME::detail Namespace Reference

Data Structures

struct  has_size_and_data
 
struct  has_size_and_data< T, void_t< decltype(detail::size(std::declval< T >())), decltype(detail::data(std::declval< T >()))> >
 
struct  is_complete
 
struct  is_complete< T, decltype(sizeof(T))>
 
struct  is_container
 
struct  is_container_element_type_compatible
 
struct  is_container_element_type_compatible< T, E, typename std::enable_if< !std::is_same< typename std::remove_cv< decltype(detail::data(std::declval< T >()))>::type, void >::value >::type >
 
struct  is_span
 
struct  is_span< span< T, S > >
 
struct  is_std_array
 
struct  is_std_array< std::array< T, N > >
 
struct  span_storage
 
struct  span_storage< E, dynamic_extent >
 

Typedefs

template<typename T >
using remove_pointer_t = typename std::remove_pointer< T >::type
 
template<typename T >
using uncvref_t = typename std::remove_cv< typename std::remove_reference< T >::type >::type
 
template<typename... >
using void_t = void
 

Functions

template<class C >
constexpr auto data (C &c) -> decltype(c.data())
 
template<class C >
constexpr auto data (const C &c) -> decltype(c.data())
 
template<class E >
constexpr const E * data (std::initializer_list< E > il) noexcept
 
template<class T , std::size_t N>
constexpr T * data (T(&array)[N]) noexcept
 
template<class C >
constexpr auto size (const C &c) -> decltype(c.size())
 
template<class T , std::size_t N>
constexpr std::size_t size (const T(&)[N]) noexcept
 

Typedef Documentation

◆ remove_pointer_t

template<typename T >
using TCB_SPAN_NAMESPACE_NAME::detail::remove_pointer_t = typedef typename std::remove_pointer<T>::type

Definition at line 273 of file span.h.

◆ uncvref_t

template<typename T >
using TCB_SPAN_NAMESPACE_NAME::detail::uncvref_t = typedef typename std::remove_cv<typename std::remove_reference<T>::type>::type

Definition at line 243 of file span.h.

◆ void_t

template<typename... >
using TCB_SPAN_NAMESPACE_NAME::detail::void_t = typedef void

Definition at line 238 of file span.h.

Function Documentation

◆ data() [1/4]

template<class C >
constexpr auto TCB_SPAN_NAMESPACE_NAME::detail::data ( C &  c) -> decltype(c.data())
constexpr

◆ data() [2/4]

template<class C >
constexpr auto TCB_SPAN_NAMESPACE_NAME::detail::data ( const C &  c) -> decltype(c.data())
constexpr

Definition at line 216 of file span.h.

217 {
218  return c.data();
219 }

◆ data() [3/4]

template<class E >
constexpr const E* TCB_SPAN_NAMESPACE_NAME::detail::data ( std::initializer_list< E >  il)
constexprnoexcept

Definition at line 228 of file span.h.

229 {
230  return il.begin();
231 }

◆ data() [4/4]

template<class T , std::size_t N>
constexpr T* TCB_SPAN_NAMESPACE_NAME::detail::data ( T(&)  array[N])
constexprnoexcept

Definition at line 222 of file span.h.

223 {
224  return array;
225 }

◆ size() [1/2]

template<class C >
constexpr auto TCB_SPAN_NAMESPACE_NAME::detail::size ( const C &  c) -> decltype(c.size())
constexpr

◆ size() [2/2]

template<class T , std::size_t N>
constexpr std::size_t TCB_SPAN_NAMESPACE_NAME::detail::size ( const   T(&)[N])
constexprnoexcept

Definition at line 204 of file span.h.

205 {
206  return N;
207 }
array