// Debugging multiset implementation -*- C++ -*-
-// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011
-// Free Software Foundation, Inc.
+// Copyright (C) 2003-2013 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
multiset(const _Base& __x)
: _Base(__x) { }
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
+#if __cplusplus >= 201103L
multiset(multiset&& __x)
noexcept(is_nothrow_copy_constructible<_Compare>::value)
: _Base(std::move(__x))
return *this;
}
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
+#if __cplusplus >= 201103L
multiset&
operator=(multiset&& __x)
{
// NB: DR 1204.
// NB: DR 675.
+ __glibcxx_check_self_move_assign(__x);
clear();
swap(__x);
return *this;
rend() const _GLIBCXX_NOEXCEPT
{ return const_reverse_iterator(begin()); }
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
+#if __cplusplus >= 201103L
const_iterator
cbegin() const noexcept
{ return const_iterator(_Base::begin(), this); }
using _Base::max_size;
// modifiers:
+#if __cplusplus >= 201103L
+ template<typename... _Args>
+ iterator
+ emplace(_Args&&... __args)
+ {
+ return iterator(_Base::emplace(std::forward<_Args>(__args)...), this);
+ }
+
+ template<typename... _Args>
+ iterator
+ emplace_hint(const_iterator __pos, _Args&&... __args)
+ {
+ __glibcxx_check_insert(__pos);
+ return iterator(_Base::emplace_hint(__pos.base(),
+ std::forward<_Args>(__args)...),
+ this);
+ }
+#endif
+
iterator
insert(const value_type& __x)
{ return iterator(_Base::insert(__x), this); }
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
+#if __cplusplus >= 201103L
iterator
insert(value_type&& __x)
{ return iterator(_Base::insert(std::move(__x)), this); }
return iterator(_Base::insert(__position.base(), __x), this);
}
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
+#if __cplusplus >= 201103L
iterator
insert(const_iterator __position, value_type&& __x)
{
__gnu_debug::__base(__last));
}
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
+#if __cplusplus >= 201103L
void
insert(initializer_list<value_type> __l)
{ _Base::insert(__l); }
#endif
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
+#if __cplusplus >= 201103L
iterator
erase(const_iterator __position)
{
return __count;
}
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
+#if __cplusplus >= 201103L
iterator
erase(const_iterator __first, const_iterator __last)
{