⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 auto_space.hpp

📁 CGAL is a collaborative effort of several sites in Europe and Israel. The goal is to make the most i
💻 HPP
字号:
/* Copyright 2003-2004 Joaqu韓 M L髉ez Mu駉z. * Distributed under 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) * * See http://www.boost.org/libs/multi_index for library home page. */#ifndef BOOST_MULTI_INDEX_DETAIL_AUTO_SPACE_HPP#define BOOST_MULTI_INDEX_DETAIL_AUTO_SPACE_HPP#include <boost/detail/allocator_utilities.hpp>#include <boost/noncopyable.hpp>#include <memory>namespace boost{namespace multi_index{namespace detail{/* auto_space provides uninitialized space suitably to store * a given number of elements of a given type. *//* NB: it is not clear whether using an allocator to handle * zero-sized arrays of elements is conformant or not. GCC 3.3.1 * and prior fail here, other stdlibs handle the issue gracefully. * To be on the safe side, the case n==0 is given special treatment. * References: *   GCC Bugzilla, "standard allocator crashes when deallocating segment *    "of zero length", http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14176 *   C++ Standard Library Defect Report List (Revision 28), issue 199 *     "What does allocate(0) return?", *     http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#199 */template<typename T,typename Allocator=std::allocator<T> >struct auto_space:private noncopyable{  explicit auto_space(const Allocator& al=Allocator(),std::size_t n=1):  al_(al),n_(n),data_(n_?al_.allocate(n_):0)  {}  ~auto_space()  {    if(n_)al_.deallocate(data_,n_);  }  T* data()const{return data_;}    private:  typename boost::detail::allocator::rebind_to<    Allocator,T>::type                          al_;  std::size_t                                   n_;  T*                                            data_;};} /* namespace multi_index::detail */} /* namespace multi_index */} /* namespace boost */#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -