+ if(conditions.empty())
+ return 0;
+
+ bool intersect = dynamic_cast<const AndCondition *>(&parent);
+ RangeCondition<T> *result;
+ if(intersect)
+ result = new RangeCondition<T>(Traits::get_min(), Traits::get_max());
+ else
+ result = new RangeCondition<T>(Traits::get_max(), Traits::get_min());
+ for(std::vector<const Condition *>::const_iterator i=conditions.begin(); i!=conditions.end(); ++i)