19 class SepUnion :
public Sep<SepUnion>
24 requires IsSepBaseOrPtr<S>
25 SepUnion(std::initializer_list<S> seps)
26 : SepUnion(Collection<SepBase>(seps))
29 SepUnion(
const Collection<SepBase>& c)
30 : Sep<SepUnion>([&c]() {
31 assert_release(!c.empty());
32 return size_of(c.front());
37 requires (IsSepBaseOrPtr<S> && !std::is_same_v<SepUnion,S>)
39 : Sep<SepUnion>(size_of(s)), _seps(s)
42 template<
typename... S>
43 requires (IsSepBaseOrPtr<S> && ...)
44 SepUnion(
const S&... s)
45 : Sep<SepUnion>(size_first_item(s...)), _seps(s...)
47 assert_release(all_same_size(s...));
58 requires IsSepBaseOrPtr<S>
59 SepUnion& operator|=(
const S& s)
61 assert_release(size_of(s) == this->size());
68 Collection<SepBase> _seps;
71 template<
typename S1,
typename S2>
72 requires (IsSepBaseOrPtr<S1> && IsSepBaseOrPtr<S2>)
73 inline SepUnion
operator|(
const S1& s1,
const S2& s2)
75 return SepUnion(s1,s2);
79 requires IsSepBaseOrPtr<S2>
82 assert_release(s1.size() == s2.size());
83 return SepUnion(SepWrapper(s1),s2);
87 requires IsSepBaseOrPtr<S1>
90 assert_release(s1.size() == s2.size());
91 return SepUnion(s1,SepWrapper(s2));
Definition codac2_OctaSym.h:21
Eigen::Matrix< Interval,-1, 1 > IntervalVector
Alias for a dynamic-size column vector of intervals.
Definition codac2_IntervalVector.h:25