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