X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=i686-linux-gnu-4.7%2Fusr%2Finclude%2Fc%2B%2B%2F4.7%2Fbits%2Fuses_allocator.h;fp=i686-linux-gnu-4.7%2Fusr%2Finclude%2Fc%2B%2B%2F4.7%2Fbits%2Fuses_allocator.h;h=49b5409c15abaea865b1e1f88dd63423d2d022b3;hb=94df942c2c7bd3457276fe5b7367623cbb8c1302;hp=0000000000000000000000000000000000000000;hpb=4dd7d9155a920895ff7b1cb6b9c9c676aa62000a;p=cross.git
diff --git a/i686-linux-gnu-4.7/usr/include/c++/4.7/bits/uses_allocator.h b/i686-linux-gnu-4.7/usr/include/c++/4.7/bits/uses_allocator.h
new file mode 100644
index 0000000..49b5409
--- /dev/null
+++ b/i686-linux-gnu-4.7/usr/include/c++/4.7/bits/uses_allocator.h
@@ -0,0 +1,109 @@
+// Uses-allocator Construction -*- C++ -*-
+
+// Copyright (C) 2010, 2011 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
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// .
+
+#ifndef _USES_ALLOCATOR_H
+#define _USES_ALLOCATOR_H 1
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include
+#else
+
+#include
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+ /// [allocator.tag]
+ struct allocator_arg_t { };
+
+ constexpr allocator_arg_t allocator_arg = allocator_arg_t();
+
+_GLIBCXX_HAS_NESTED_TYPE(allocator_type)
+
+ template::value>
+ struct __uses_allocator_helper
+ : public false_type { };
+
+ template
+ struct __uses_allocator_helper<_Tp, _Alloc, true>
+ : public integral_constant::value>
+ { };
+
+ /// [allocator.uses.trait]
+ template
+ struct uses_allocator
+ : public integral_constant::value>
+ { };
+
+ template
+ struct __uses_allocator_arg
+ : is_constructible<_Tp, _Alloc, _Args...>
+ { static_assert( uses_allocator<_Tp, _Alloc>::value, "uses allocator" ); };
+
+ struct __uses_alloc_base { };
+ struct __uses_alloc0 : __uses_alloc_base
+ { struct _Anything { _Anything(...) { } } _M_a; };
+ template
+ struct __uses_alloc1 : __uses_alloc_base { const _Alloc* _M_a; };
+ template
+ struct __uses_alloc2 : __uses_alloc_base { const _Alloc* _M_a; };
+
+ template
+ struct __uses_alloc;
+
+ template
+ struct __uses_alloc
+ : conditional<
+ is_constructible<_Tp, allocator_arg_t, _Alloc, _Args...>::value,
+ __uses_alloc1<_Alloc>,
+ __uses_alloc2<_Alloc>>::type
+ { };
+
+ template
+ struct __uses_alloc
+ : __uses_alloc0 { };
+
+ template
+ struct __uses_alloc_impl
+ : __uses_alloc::value, _Tp, _Alloc, _Args...>
+ { };
+
+ template
+ __uses_alloc_impl<_Tp, _Alloc, _Args...>
+ __use_alloc(const _Alloc& __a)
+ {
+ __uses_alloc_impl<_Tp, _Alloc, _Args...> __ret;
+ __ret._M_a = &__a;
+ return __ret;
+ }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif
+#endif