1 #ifndef PYTHONIC_BUILTIN_SET_DIFFERENCEUPDATE_HPP 2 #define PYTHONIC_BUILTIN_SET_DIFFERENCEUPDATE_HPP 3 4 #include "pythonic/include/builtins/set/difference_update.hpp" 5 6 #include "pythonic/types/set.hpp" 7 #include "pythonic/utils/functor.hpp" 8 9 PYTHONIC_NS_BEGIN 10 11 namespace builtins 12 { 13 14 namespace set 15 { 16 17 template <typename T, typename... Types> difference_update(types::set<T> & set,Types const &...others)18 types::none_type difference_update(types::set<T> &set, 19 Types const &... others) 20 { 21 set.difference_update(others...); 22 return {}; 23 } 24 25 template <typename T, typename... Types> difference_update(types::set<T> && set,Types const &...others)26 types::none_type difference_update(types::set<T> &&set, 27 Types const &... others) 28 { 29 // nothing to be done as we work on rvalue 30 return {}; 31 } 32 33 template <typename... Types> difference_update(types::empty_set const & set,Types const &...others)34 types::none_type difference_update(types::empty_set const &set, 35 Types const &... others) 36 { 37 // nothing can be removed in set 38 return {}; 39 } 40 } 41 } 42 PYTHONIC_NS_END 43 #endif 44