|  | 
| template<typename Rng1 , typename Rng2 , typename C , typename P1 , typename P2 > | 
| using | ranges::set_difference_view = detail::set_algorithm_view< Rng1, Rng2, C, P1, P2, detail::set_difference_cursor, detail::set_difference_cardinality(range_cardinality< Rng1 >::value, range_cardinality< Rng2 >::value)> | 
|  | 
| template<typename Rng1 , typename Rng2 , typename C , typename P1 , typename P2 > | 
| using | ranges::set_intersection_view = detail::set_algorithm_view< Rng1, Rng2, C, P1, P2, detail::set_intersection_cursor, detail::set_intersection_cardinality(range_cardinality< Rng1 >::value, range_cardinality< Rng2 >::value)> | 
|  | 
| template<typename Rng1 , typename Rng2 , typename C , typename P1 , typename P2 > | 
| using | ranges::set_symmetric_difference_view = detail::set_algorithm_view< Rng1, Rng2, C, P1, P2, detail::set_symmetric_difference_cursor, detail::set_symmetric_difference_cardinality(range_cardinality< Rng1 >::value, range_cardinality< Rng2 >::value)> | 
|  | 
| template<typename Rng1 , typename Rng2 , typename C , typename P1 , typename P2 > | 
| using | ranges::set_union_view = detail::set_algorithm_view< Rng1, Rng2, C, P1, P2, detail::set_union_cursor, detail::set_union_cardinality(range_cardinality< Rng1 >::value, range_cardinality< Rng2 >::value)> | 
|  |