青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

boost/checked_delete.hpp

Posted on 2009-06-22 13:26 天邊藍 閱讀(607) 評論(0)  編輯 收藏 引用 所屬分類: boost學習

 

 1#ifndef BOOST_CHECKED_DELETE_HPP_INCLUDED
 2#define BOOST_CHECKED_DELETE_HPP_INCLUDED
 3
 4// MS compatible compilers support #pragma once
 5
 6#if defined(_MSC_VER) && (_MSC_VER >= 1020)
 7# pragma once
 8#endif
 9
10//
11//  boost/checked_delete.hpp
12//
13//  Copyright (c) 2002, 2003 Peter Dimov
14//  Copyright (c) 2003 Daniel Frey
15//  Copyright (c) 2003 Howard Hinnant
16//
17//  Distributed under the Boost Software License, Version 1.0. (See
18//  accompanying file LICENSE_1_0.txt or copy at
19//  http://www.boost.org/LICENSE_1_0.txt)
20//
21//  See http://www.boost.org/libs/utility/checked_delete.html for documentation.
22//
23
24namespace boost
25{
26
27// verify that types are complete for increased safety
28
29template<class T> inline void checked_delete(T * x)
30{
31    // intentionally complex - simplification causes regressions
32    typedef char type_must_be_complete[ sizeof(T)? 1-1 ];
33    (voidsizeof(type_must_be_complete);
34    delete x;
35}

36
37template<class T> inline void checked_array_delete(T * x)
38{
39    typedef char type_must_be_complete[ sizeof(T)? 1-1 ];
40    (voidsizeof(type_must_be_complete);
41    delete [] x;
42}

43
44template<class T> struct checked_deleter
45{
46    typedef void result_type;
47    typedef T * argument_type;
48
49    void operator()(T * x) const
50    {
51        // boost:: disables ADL
52        boost::checked_delete(x);
53    }

54}
;
55
56template<class T> struct checked_array_deleter
57{
58    typedef void result_type;
59    typedef T * argument_type;
60
61    void operator()(T * x) const
62    {
63        boost::checked_array_delete(x);
64    }

65}
;
66
67}
 // namespace boost
68
69#endif  // #ifndef BOOST_CHECKED_DELETE_HPP_INCLUDED


------------------------------------
source:http://www.boost.org/doc/libs/1_39_0/libs/utility/checked_delete.html

The header <boost/checked_delete.hpp> defines two function templates, checked_delete and checked_array_delete, and two class templates, checked_deleter and checked_array_deleter.

The C++ Standard allows, in 5.3.5/5, pointers to incomplete class types to be deleted with a delete-expression. When the class has a non-trivial destructor, or a class-specific operator delete, the behavior is undefined. Some compilers issue a warning when an incomplete type is deleted, but unfortunately, not all do, and programmers sometimes ignore or disable warnings.

A particularly troublesome case is when a smart pointer's destructor, such as boost::scoped_ptr<T>::~scoped_ptr, is instantiated with an incomplete type. This can often lead to silent, hard to track failures.

The supplied function and class templates can be used to prevent these problems, as they require a complete type, and cause a compilation error otherwise.

Synopsis

 1namespace boost
 2{
 3
 4template<class T> void checked_delete(T * p);
 5template<class T> void checked_array_delete(T * p);
 6template<class T> struct checked_deleter;
 7template<class T> struct checked_array_deleter;
 8
 9}

10
11checked_delete
12template<class T> void checked_delete(T * p);
13
14


Requires: T must be a complete type. The expression delete p must be well-formed.

Effects: delete p;

 

 1checked_array_delete
 2template<class T> void checked_array_delete(T * p);
 3Requires: T must be a complete type. The expression delete [] p must be well-formed. 
 4
 5Effects: delete [] p; 
 6
 7checked_deleter
 8template<class T> struct checked_deleter
 9{
10    typedef void result_type;
11    typedef T * argument_type;
12    void operator()(T * p) const;
13}
;
14
15void checked_deleter<T>::operator()(T * p) const;
16
17


Requires: T must be a complete type. The expression delete p must be well-formed.

Effects: delete p;

 

 1checked_array_deleter
 2template<class T> struct checked_array_deleter
 3{
 4    typedef void result_type;
 5    typedef T * argument_type;
 6    void operator()(T * p) const;
 7}
;
 8
 9void checked_array_deleter<T>::operator()(T * p) const;
10


Requires: T must be a complete type. The expression delete [] p must be well-formed.

Effects: delete [] p;

Acknowledgements
The function templates checked_delete and checked_array_delete were originally part of <boost/utility.hpp>, and the documentation acknowledged Beman Dawes, Dave Abrahams, Vladimir Prus, Rainer Deyke, John Maddock, and others as contributors.


Copyright © 2002 by Peter Dimov. 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.


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


Copyright © 天邊藍

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            在线视频精品一区| 国产欧美一区二区三区久久| 久久久99免费视频| 欧美午夜免费电影| 欧美高清日韩| 精品福利电影| 欧美一区二区三区日韩视频| 中文亚洲字幕| 欧美精品国产一区| 欧美mv日韩mv亚洲| 国模吧视频一区| 亚洲欧洲av一区二区| 国产精品99久久久久久人| 欧美成人午夜77777| 巨乳诱惑日韩免费av| 国产一区日韩二区欧美三区| 亚洲尤物视频网| 午夜精品一区二区三区在线播放| 欧美日韩成人综合天天影院| 亚洲国产网站| a4yy欧美一区二区三区| 欧美激情视频网站| 亚洲日本中文字幕| 一本久道久久综合中文字幕| 欧美成人一区二区在线| 亚洲国产精品小视频| 亚洲精品视频免费在线观看| 欧美1区2区3区| 亚洲国产成人高清精品| 亚洲免费av网站| 欧美日韩免费观看一区=区三区| 亚洲免费播放| 性欧美1819性猛交| 国产一区二区三区高清在线观看| 性欧美8khd高清极品| 久久精品亚洲乱码伦伦中文| 一区二区在线不卡| 欧美大片91| 99热免费精品在线观看| 亚洲欧美区自拍先锋| 国产精品视频免费观看www| 亚洲欧美精品| 国产亚洲欧美另类中文| 可以看av的网站久久看| 亚洲精品在线二区| 午夜精品福利在线| 国产一区二区三区四区| 蜜臀久久久99精品久久久久久| 亚洲黑丝在线| 亚洲欧美日韩精品久久奇米色影视| 国产情侣久久| 欧美成人日韩| 午夜国产精品影院在线观看| 免费h精品视频在线播放| 99精品欧美一区| 国产日韩欧美三级| 欧美凹凸一区二区三区视频| 亚洲一区高清| 蜜桃久久av一区| 亚洲免费一在线| 亚洲国产日韩综合一区| 国产精品v欧美精品v日韩精品 | 亚洲欧美在线观看| 国产一区在线免费观看| 欧美精品在线视频| 美女性感视频久久久| 999在线观看精品免费不卡网站| 国产精品网站视频| 欧美大片在线观看| 亚洲欧美日韩国产成人精品影院| 欧美激情亚洲国产| 欧美怡红院视频一区二区三区| 亚洲人体偷拍| 国产午夜精品视频免费不卡69堂| 欧美日本在线观看| 久久亚洲欧美国产精品乐播| 中文精品99久久国产香蕉| 亚洲成色精品| 亚洲蜜桃精久久久久久久| 国产一区二区在线观看免费| 欧美日韩亚洲在线| 美国成人直播| 久久精品盗摄| 午夜国产欧美理论在线播放 | 亚洲一区在线观看视频| 亚洲高清视频一区| 免费亚洲电影| 久久aⅴ国产紧身牛仔裤| 中文在线资源观看网站视频免费不卡 | 久久久久久欧美| 亚洲免费视频在线观看| 99热这里只有精品8| 亚洲第一区在线观看| 国产精品在线看| 国产精品久久久一区二区| 欧美日韩一区二区三区免费看| 欧美va天堂在线| 免费精品视频| 猛男gaygay欧美视频| 久热精品视频在线观看| 久久久久久久久久看片| 欧美专区第一页| 欧美中在线观看| 欧美综合第一页| 久久gogo国模啪啪人体图| 性刺激综合网| 久久精品国产69国产精品亚洲| 午夜日韩在线| 欧美在线免费一级片| 久久久99久久精品女同性 | 欧美成人精品1314www| 久久久av毛片精品| 久久免费视频一区| 免费永久网站黄欧美| 欧美 日韩 国产 一区| 欧美xx69| 亚洲国产另类精品专区| 亚洲美女精品一区| 亚洲视频免费观看| 亚洲欧洲av一区二区三区久久| 午夜精品久久久久久久久久久久久| 亚洲欧美制服另类日韩| 久久久国产精品亚洲一区| 噜噜噜久久亚洲精品国产品小说| 蜜桃av久久久亚洲精品| 欧美日韩国产综合新一区| 国产精品久久久久91| 国产日韩欧美高清免费| 在线欧美一区| 这里只有精品电影| 西瓜成人精品人成网站| 久久久久欧美精品| 亚洲国产精品久久久久婷婷老年| 日韩一级视频免费观看在线| 亚洲午夜日本在线观看| 久久精品国产免费看久久精品| 免费日韩av| 国产精品黄视频| 激情综合中文娱乐网| 日韩一区二区福利| 欧美中文字幕| 亚洲欧洲一区二区在线观看| 亚洲影院污污.| 久久一区欧美| 国产精品美女主播| 亚洲国产成人精品视频| 亚洲欧美在线观看| 欧美jizz19性欧美| 亚洲一级在线观看| 女同性一区二区三区人了人一| 国产精品久久久久久亚洲调教| 一区二区三区在线观看视频| 亚洲一区二区三区四区五区黄| 久久中文在线| 亚洲一区二区免费在线| 欧美a级片一区| 国产一级揄自揄精品视频| 亚洲视频自拍偷拍| 欧美va天堂在线| 亚洲欧美999| 欧美日韩四区| 亚洲精美视频| 久久精品国产亚洲a| 日韩视频在线一区二区三区| 久久综合久久综合九色| 国产欧美日韩一区二区三区在线观看 | 亚洲黑丝一区二区| 性感少妇一区| 国产精品a久久久久久| 最新国产精品拍自在线播放| 久久精品五月| 亚洲午夜视频| 欧美日韩视频一区二区| 91久久精品日日躁夜夜躁国产| 久久久五月天| 午夜在线精品| 国产精品自拍网站| 中文av字幕一区| 最新国产拍偷乱拍精品 | 欧美黄色成人网| 亚洲二区视频在线| 美女国产精品| 久久久久久久综合| 国产一级久久| 久久九九精品99国产精品| 亚洲欧美日本另类| 国产精品私房写真福利视频 | 在线亚洲国产精品网站| 亚洲第一精品影视| 免费欧美网站| 亚洲精品永久免费| 亚洲国产精品黑人久久久| 免费在线观看一区二区| 亚洲日本成人| 亚洲欧洲一区二区三区久久| 欧美日本一区二区视频在线观看| 日韩视频免费| 99视频在线精品国自产拍免费观看 | 在线电影欧美日韩一区二区私密| 久久久亚洲影院你懂的|