18 #include <type_traits>
21 #if !defined(ACTS_SOURCELINK_SBO_SIZE)
23 #define ACTS_SOURCELINK_SBO_SIZE 16
40 template <
typename T,
typename = std::enable_if_t<
43 static_assert(!std::is_same_v<std::decay_t<T>,
SourceLink>,
44 "Cannot wrap SourceLink in SourceLink");
46 if constexpr (std::is_same_v<
T, std::decay_t<T>>) {
65 const T&
get()
const {
80 using pointer =
typename BaseIterator::pointer;
85 SourceLinkAdapterIterator& operator++() {
90 bool operator==(
const SourceLinkAdapterIterator& other)
const {
91 return m_iterator == other.m_iterator;
94 bool operator!=(
const SourceLinkAdapterIterator& other)
const {
95 return !(*
this == other);
100 auto operator-(
const SourceLinkAdapterIterator& other)
const {
101 return m_iterator - other.m_iterator;
104 BaseIterator m_iterator;