Squashed 'third_party/boostorg/container/' content from commit 1ad6431

Change-Id: I7d095db3455264c03446268e5675b926bebedb0a
git-subtree-dir: third_party/boostorg/container
git-subtree-split: 1ad64316a432a7f021b4956acf88abc6aaa8a77e
diff --git a/bench/detail/varray_concept.hpp b/bench/detail/varray_concept.hpp
new file mode 100644
index 0000000..94d19bd
--- /dev/null
+++ b/bench/detail/varray_concept.hpp
@@ -0,0 +1,60 @@
+// Boost.Container varray
+//
+// Copyright (c) 2012-2013 Andrew Hundt.
+// Copyright (c) 2012-2013 Adam Wulkiewicz, Lodz, Poland.
+//
+// Use, modification and distribution is subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_CONTAINER_VARRAY_CONCEPT_HPP
+#define BOOST_CONTAINER_VARRAY_CONCEPT_HPP
+
+#include <boost/concept_check.hpp>
+
+namespace boost { namespace container { namespace dtl { namespace concept {
+
+/**
+ * VArrayStrategyConcept
+ *
+ *  \brief Checks strategy for varray<Value,Capacity,Strategy>, which has similarities to std::allocator
+ *  \ingroup varray
+ */
+template<typename Strategy>
+struct VArrayStrategy {
+#ifndef DOXYGEN_NO_CONCEPT_MEMBERS
+
+    // typedefs are the same as in std::allocator
+    typedef typename Strategy::value_type      value_type;
+    typedef typename Strategy::size_type       size_type;
+    typedef typename Strategy::difference_type difference_type;
+    typedef typename Strategy::pointer         pointer;
+    typedef typename Strategy::const_pointer   const_pointer;
+    typedef typename Strategy::reference       reference;
+    typedef typename Strategy::const_reference const_reference;
+
+    struct check_methods
+    {
+        static void apply()
+        {
+            Strategy const* str = 0;
+
+            // must implement allocate_failed
+            str->allocate_failed();
+
+            boost::ignore_unused_variable_warning(str);
+        }
+    };
+
+public :
+    BOOST_CONCEPT_USAGE(VArrayStrategy)
+    {
+        check_methods::apply();
+    }
+
+#endif
+};
+
+}}}} // namespace boost::container::dtl::concept
+
+#endif //BOOST_CONTAINER_VARRAY_CONCEPT_HPP