5 #include <boost/iterator/filter_iterator.hpp>
13 struct container_range
28 #define DEFINE(Name) \
29 auto Name() const -> decltype(this->cont_.Name()) \
31 return cont_.Name(); \
47 template <
typename Cont,
typename Pred>
56 = boost::filter_iterator<predicate_t, typename unref_C::const_iterator>;
102 return std::distance(
begin(),
end());
110 template <
typename Cont,
typename Pred>
auto front() const -> decltype(this->cont_.front())
The first element.
boost::filter_iterator< predicate_t, typename unref_C::const_iterator > const_iterator
value_type front() const
The first element.
auto size() const -> decltype(this->cont_.size())
auto end() const -> decltype(this->cont_.end())
auto begin() const -> decltype(this->cont_.begin())
typename std::remove_reference< C >::type unref_C
ATTRIBUTE_PURE size_t size() const
container_range(const unref_C &cont)
std::string type(const automaton &a)
The implementation type of a.
value_type back() const
The last element.
typename unref_C::const_iterator const_iterator
#define DEFINE(Name)
Forward function Name to the container.
auto empty() const -> decltype(this->cont_.empty())
ATTRIBUTE_PURE bool empty() const
auto back() const -> decltype(this->cont_.back())
The last element.
typename std::remove_reference< container_t >::type unref_C
container_filter_range< Cont, Pred > make_container_filter_range(const Cont &cont, Pred pred)
container_filter_range(const unref_C &cont, predicate_t predicate)
typename unref_C::value_type value_type
const_iterator end() const
typename unref_C::value_type value_type
const_iterator begin() const