| // { dg-do compile } |
| // { dg-options "-std=c++11 -Wno-return-type" } |
| |
| namespace std |
| { |
| template <class, class> |
| struct pair |
| { |
| }; |
| struct input_iterator_tag |
| { |
| }; |
| struct forward_iterator_tag : public input_iterator_tag |
| { |
| }; |
| template <typename, typename _Tp, typename = _Tp> |
| struct iterator |
| { |
| }; |
| } |
| namespace __gnu_cxx |
| { |
| template <typename _Tp> |
| struct new_allocator |
| { |
| typedef _Tp pointer; |
| typedef _Tp value_type; |
| template <typename _Tp1> |
| struct rebind |
| { |
| typedef new_allocator <_Tp1> other; |
| }; |
| }; |
| } |
| namespace std |
| { |
| template <typename _Tp> |
| struct allocator : public __gnu_cxx::new_allocator <_Tp> |
| { |
| }; |
| } |
| extern "C" |
| { |
| struct rtl_String; |
| void rtl_string_release (rtl_String *) throw (); |
| void rtl_string_newFromStr (rtl_String * *, const char *) throw (); |
| } |
| namespace std |
| { |
| template <typename, typename, typename> struct binary_function; |
| template <typename _Tp> |
| struct equal_to : public binary_function <_Tp, _Tp, bool> |
| { |
| }; |
| } |
| namespace rtl |
| { |
| struct OString |
| { |
| rtl_String * pData; |
| OString (const char *value) |
| { |
| rtl_string_newFromStr (&pData, value); |
| } |
| ~OString () |
| { |
| rtl_string_release (pData); |
| } |
| }; |
| struct OStringHash; |
| } |
| namespace boost |
| { |
| template <class> struct hash; |
| namespace unordered |
| { |
| template <class T, class = boost::hash <T>, class = std::equal_to <T>, class = std::allocator <T>>class unordered_set; |
| } |
| using boost::unordered::unordered_set; |
| namespace detail |
| { |
| template <bool> |
| struct if_true |
| { |
| template <class, class F> |
| struct then |
| { |
| typedef F type; |
| }; |
| }; |
| } |
| template <class, class> struct pointer_to_other; |
| template <class T, class U> |
| struct pointer_to_other <T *, U> |
| { |
| typedef U type; |
| }; |
| namespace unordered |
| { |
| namespace detail |
| { |
| template <typename T, T> struct integral_constant |
| { |
| }; |
| struct choice9 |
| { |
| typedef char (&type)[9]; |
| }; |
| struct choice8:choice9 |
| { |
| }; |
| struct choice7:choice8 |
| { |
| }; |
| struct choice6:choice7 |
| { |
| }; |
| struct choice5:choice6 |
| { |
| }; |
| struct choice4:choice5 |
| { |
| }; |
| struct choice3:choice4 |
| { |
| }; |
| struct choice2:choice3 |
| { |
| }; |
| struct choice1:choice2 |
| { |
| }; |
| choice1 choose (); |
| template <typename Alloc, typename T> |
| struct rebind_wrap |
| { |
| typedef typename Alloc::template rebind <T>::other type; |
| }; |
| template <typename, typename T2> |
| struct sfinae:T2 |
| { |
| }; |
| template <typename Tp, typename Default> |
| struct default_type_pointer |
| { |
| template <typename X> |
| static boost::unordered::detail::sfinae <typename X::pointer, choice1> test (choice1); |
| struct DefaultWrap |
| { |
| typedef Default pointer; |
| }; |
| enum { value = (1 == sizeof (test <Tp> (choose ()))) }; |
| typedef typename boost::detail::if_true <value>::template then <Tp, DefaultWrap>::type::pointer type; |
| }; |
| template <typename Tp, typename Default> |
| struct default_type_const_pointer |
| { |
| template <typename> |
| static choice2::type test (choice2); |
| struct DefaultWrap |
| { |
| }; |
| enum { value = (1 == sizeof (test <Tp> (choose ()))) }; |
| typedef typename boost::detail::if_true <value>::template then <Tp, DefaultWrap> type; |
| }; |
| struct default_type_propagate_on_container_swap |
| { |
| struct DefaultWrap |
| { |
| }; |
| }; |
| template <typename Alloc> |
| struct allocator_traits |
| { |
| typedef typename Alloc::value_type value_type; |
| typedef typename default_type_pointer <Alloc, value_type *>::type pointer; |
| template <typename T> |
| struct pointer_to_other : boost::pointer_to_other <pointer, T> |
| { |
| }; |
| typedef typename default_type_const_pointer <Alloc, typename pointer_to_other <value_type>::type>::type const_pointer; |
| }; |
| } |
| namespace detail |
| { |
| struct move_tag |
| { |
| }; |
| template <typename> struct table; |
| template <typename NodeAlloc> |
| struct node_constructor |
| { |
| void construct_value () |
| { |
| } |
| }; |
| struct ptr_bucket |
| { |
| ptr_bucket () |
| { |
| } |
| }; |
| template <typename A, typename Bucket, typename Node> |
| struct buckets |
| { |
| typedef Node node; |
| typedef Bucket bucket; |
| typedef typename boost::unordered::detail::rebind_wrap <A, node>::type node_allocator; |
| typedef typename boost::unordered::detail::rebind_wrap <A, bucket>::type bucket_allocator; |
| typedef boost::unordered::detail::allocator_traits <node_allocator> node_allocator_traits; |
| typedef boost::unordered::detail::allocator_traits <bucket_allocator> bucket_allocator_traits; |
| typedef typename node_allocator_traits::pointer node_pointer; |
| typedef typename node_allocator_traits::const_pointer const_node_pointer; |
| typedef typename bucket_allocator_traits::pointer bucket_pointer; |
| typedef boost::unordered::detail::node_constructor <node_allocator> node_constructor; |
| bucket_pointer buckets_; |
| unsigned size_; |
| template <typename Types> |
| buckets (boost::unordered::detail::table <Types>, boost::unordered::detail::move_tag) : buckets_ (), size_ () |
| { |
| } |
| }; |
| struct functions |
| { |
| }; |
| } |
| } |
| namespace detail |
| { |
| template <class Category, class T, class, class, class> |
| struct iterator_base:std::iterator <Category, T> |
| { |
| }; |
| } |
| template <class Category, class T, class Distance, class Pointer = T, class Reference = T> |
| struct iterator:boost::detail::iterator_base <Category, T, Distance, Pointer, Reference> |
| { |
| }; |
| namespace unordered |
| { |
| namespace iterator_detail |
| { |
| template <typename, typename NodePointer, typename Value> struct c_iterator:public boost::iterator <std::forward_iterator_tag, Value, int> |
| { |
| friend bool operator== (c_iterator, c_iterator) |
| { |
| } |
| }; |
| } |
| namespace detail |
| { |
| template <typename ValueType> |
| struct value_base |
| { |
| typedef ValueType value_type; |
| value_type value () |
| { |
| } |
| }; |
| template <typename Types> |
| struct table:boost::unordered::detail::buckets <typename Types::allocator, typename Types::bucket, typename Types::key_equal> |
| { |
| typedef typename Types::value_type value_type; |
| typedef boost::unordered::detail::buckets <typename Types::allocator, typename Types::bucket, typename Types::node> buckets; |
| typedef typename buckets::node_pointer node_pointer; |
| typedef typename buckets::const_node_pointer const_node_pointer; |
| typedef boost::unordered::iterator_detail::c_iterator <const_node_pointer, node_pointer, value_type> c_iterator; |
| unsigned max_size () |
| { |
| } |
| }; |
| template <typename> struct table_impl; |
| template <typename T> |
| struct ptr_node : boost::unordered::detail::value_base <T>, boost::unordered::detail::ptr_bucket |
| { |
| boost::unordered::detail::ptr_bucket bucket_base; |
| unsigned hash_; |
| ptr_node () : bucket_base (), hash_ () |
| { |
| } |
| }; |
| template <typename A, typename T, typename, typename> struct pick_node2 |
| { |
| }; |
| template <typename A, typename T> struct pick_node2 <A, T, boost::unordered::detail::ptr_node <T> *, boost::unordered::detail::ptr_bucket *> |
| { |
| typedef boost::unordered::detail::ptr_node <T> node; |
| typedef boost::unordered::detail::ptr_bucket bucket; |
| }; |
| template <typename A, typename T> struct pick_node |
| { |
| typedef boost::unordered::detail::allocator_traits <typename boost::unordered::detail::rebind_wrap <A, boost::unordered::detail::ptr_node <T>>::type> tentative_node_traits; |
| typedef boost::unordered::detail::allocator_traits <typename boost::unordered::detail::rebind_wrap <A, boost::unordered::detail::ptr_bucket>::type> tentative_bucket_traits; |
| typedef pick_node2 <A, T, typename tentative_node_traits::pointer, typename tentative_bucket_traits::pointer> pick; |
| typedef typename pick::node node; |
| typedef typename pick::bucket bucket; |
| }; |
| template <typename A, typename T, typename H, typename P> |
| struct set |
| { |
| typedef boost::unordered::detail::set <A, T, H, P> types; |
| typedef T value_type; |
| typedef P key_equal; |
| typedef typename boost::unordered::detail::rebind_wrap <A, value_type>::type allocator; |
| typedef boost::unordered::detail::pick_node <allocator, value_type> pick; |
| typedef typename pick::node node; |
| typedef typename pick::bucket bucket; |
| typedef boost::unordered::detail::table_impl <types> table; |
| }; |
| template <typename Types> |
| struct table_impl : boost::unordered::detail::table <Types> |
| { |
| typedef boost::unordered::detail::table <Types> table; |
| typedef typename table::node_constructor node_constructor; |
| table_impl () : table () |
| { |
| } |
| template <class InputIt> |
| void insert_range_impl2 (node_constructor, InputIt) |
| { |
| } |
| }; |
| } |
| template <class T, class H, class P, class A> |
| struct unordered_set |
| { |
| typedef T key_type; |
| typedef T value_type; |
| typedef boost::unordered::detail::set <A, T, H, P> types; |
| typedef typename types::table table; |
| typedef typename table::c_iterator const_iterator; |
| typedef typename table::c_iterator iterator; |
| table table_; |
| bool empty () |
| { |
| return table_.size_; |
| } |
| iterator end () |
| { |
| } |
| std::pair <iterator, bool> insert (value_type) |
| { |
| } |
| unsigned erase (const key_type &); |
| const_iterator find (const key_type); |
| }; |
| template <class T, class H, class P, class A> |
| unsigned unordered_set <T, H, P, A>::erase (const key_type &) |
| { |
| } |
| } |
| } |
| using namespace::rtl; |
| namespace skeletonmaker |
| { |
| void |
| checkDefaultInterfaces (boost::unordered_set <OString, OStringHash> interfaces, |
| boost::unordered_set <OStringHash> services, OString) |
| { |
| if (services.empty ()) |
| interfaces.erase ("com.sun.star.lang.XServiceInfo"); |
| else if (interfaces.find ("com.sun.star.lang.XServiceInfo") == interfaces.end ()) |
| interfaces.insert ("com.sun.star.lang.XServiceInfo"); |
| } |
| } |