21 BoxPair(
const BoxPair& x)
22 : _bp { x._bp }, inner(_bp[0]), outer(_bp[1])
25 BoxPair(
const IntervalVector& inner_,
const IntervalVector& outer_)
26 : _bp { inner_, outer_ }, inner(_bp[0]), outer(_bp[1])
29 BoxPair& operator=(
const BoxPair& x)
37 std::array<IntervalVector,2> _bp;
39 IntervalVector& inner;
40 IntervalVector& outer;
43 inline std::ostream&
operator<<(std::ostream& os,
const BoxPair& x)
45 os <<
"(" << x.inner <<
"," << x.outer <<
")";
59 virtual ~SepBase() =
default;
66 virtual std::shared_ptr<SepBase> copy()
const = 0;
67 virtual BoxPair separate(
const IntervalVector& x)
const = 0;
75 class Sep :
public SepBase
83 virtual std::shared_ptr<SepBase> copy()
const
85 return std::make_shared<S>(*
dynamic_cast<const S*
>(
this));
90 concept IsSepBaseOrPtr = (std::is_base_of_v<SepBase,S>
91 || std::is_base_of_v<S,std::shared_ptr<SepBase>>);
95 requires (IsSepBaseOrPtr<S>)
96 struct is_interval_based<S> : std::false_type {};
99 requires (IsSepBaseOrPtr<S>)
100 struct is_ctc<S> : std::false_type {};
103 requires (IsSepBaseOrPtr<S>)
104 struct is_sep<S> : std::true_type {};
std::ostream & operator<<(std::ostream &os, const BoolInterval &x)
Streams out a BoolInterval.
Definition codac2_BoolInterval.h:45