42#ifndef UFO_CONTAINER_TREE_PREDICATE_SPATIAL_HPP
43#define UFO_CONTAINER_TREE_PREDICATE_SPATIAL_HPP
46#include <ufo/container/tree/predicate/and.hpp>
47#include <ufo/container/tree/predicate/filter.hpp>
48#include <ufo/container/tree/predicate/if_and_only_if.hpp>
49#include <ufo/container/tree/predicate/if_then.hpp>
50#include <ufo/container/tree/predicate/or.hpp>
51#include <ufo/container/tree/predicate/xor.hpp>
52#include <ufo/utility/type_traits.hpp>
70template <Filterable T>
75template <Filterable T>
84template <Filterable Pred>
90 : std::disjunction<contains_spatial_pred<Preds>...> {
93template <Filterable L, Filterable R>
95 : std::disjunction<contains_spatial_pred<L>, contains_spatial_pred<R>> {
98template <Filterable L, Filterable R>
100 : std::disjunction<contains_spatial_pred<L>, contains_spatial_pred<R>> {
105 : std::disjunction<contains_spatial_pred<Preds>...> {
108template <Filterable L, Filterable R>
110 : std::disjunction<contains_spatial_pred<L>, contains_spatial_pred<R>> {
115template <Filterable T>
118template <Filterable T>
127template <Filterable Pred>
133 : std::disjunction<contains_always_spatial_pred<Preds>...> {
136template <Filterable L, Filterable R>
140template <Filterable L, Filterable R>
146 : std::conjunction<contains_always_spatial_pred<Preds>...> {
154template <Filterable T>
158constexpr inline bool contains_always_spatial_pred_v =