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

posts - 13, comments - 4, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

Imperfect C++ 讀書筆記(一)

Posted on 2008-11-17 22:27 Batiliu 閱讀(900) 評論(0)  編輯 收藏 引用 所屬分類: 讀書筆記

不完美主義實踐者的哲學

  • 原則1————C++是卓越的,但并不完美。
  • 原則2————穿上“苦行衣”。
  • 原則3————讓編譯器成為你的仆從。
  • 原則4————永不言棄,總會有解決方案的。

 

編譯期契約:約束

  1. must_have_base

    template<typename D, typename B>
    struct must_have_base
    {
        ~must_have_base()
        {
            void (*p)(D*, B*) = constraints;
        }
    private:
        static void constraints(D* pd, B* pb)
        {
            pb = pd;
        }
    };

  2. must_be_subscriptable

    template<typename T>
    struct must_be_subscriptable
    {
        ~must_be_subscriptable()
        {
            void (*p)(T const &) = constraints;
        }
    private:
        static void constraints(T const &T_is_not_subscriptable)
        {
            sizeof(T_is_not_subscriptable[0]);
        }
    };

  3. must_be_subscriptable_as_decayable_pointer

    template<typename T>
    struct must_be_subscriptable_as_decayable_pointer
    {
        ~must_be_subscriptable_as_decayable_pointer()
        {
            void (*p)(T const &) = constraints;
        }
    private:
        static void constraints(T const &T_is_not_decay_subscriptable)
        {
            sizeof(0[T_is_not_decay_subscriptable]);    // offset[pointer]
        }
    };

  4. must_be_pod

    template<typename T>
    struct must_be_pod
    {
        ~must_be_pod()
        {
            void (*p)() = constraints;
        }
    private:
        static void constraints()
        {
            union
            {
                T T_is_not_POD_type;
            };
        }
    };

  5. must_be_same_size

    template<typename T1, typename T2>
    struct must_be_same_size
    {
        ~must_be_same_size()
        {
            void (*p)() = constraints;
        }
    private:
        static void constraints()
        {
            const int T1_not_same_size_as_T2 = sizeof(T1) == sizeof(T2);
            int i[T1_not_same_size_as_T2];
        }
    };

 

斷言

建議使用斷言來斷言關于代碼結構的條件式,而不要斷言關于運行期行為的條件式。

靜態/編譯期斷言:

  1. #define STATIC_ASSERT(ex) \
        do { typedef int ai[(ex) ? 1 : 0]; } while(0)
  2. #define STATIC_ASSERT(ex) \
        switch(0) { case 0: case ex: ; }
  3. #define STATIC_ASSERT(ex) \
        struct X { unsigned int v : ex; }

 

域守衛類

template<typename L>
struct lock_traits
{
    static void lock(L &c)
    {
        lock_instance(c);
    }
    static void unlock(L &c)
    {
        unlock_instance(c);
    }
};
 
template<typename L, typename T = lock_traits<L> >
class lock_scope
{
public:
    lock_scope(L &l)
        : m_l(l)
    {
        T::lock(m_l);
    }
    ~lock_scope()
    {
        T::unlock(m_l);
    }
private:
    L &m_l;
};
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            美女黄色成人网| 一区二区av在线| 亚洲精品影视在线观看| 国产欧美日韩91| 国产精品亚洲产品| 国产精品日韩精品欧美在线| 久久gogo国模裸体人体| 欧美美女操人视频| 欧美国产先锋| 欧美日韩一区成人| 欧美视频观看一区| 国产区精品视频| 国产在线一区二区三区四区| 一区二区三区在线免费播放| 亚洲破处大片| 亚洲综合首页| 久久五月激情| 91久久中文字幕| 亚洲承认在线| 亚洲一二三区视频在线观看| 久久精品国产欧美激情| 免费高清在线一区| 国产精品国产a级| 一区二区三区在线视频免费观看| 亚洲伦理精品| 欧美在线一级va免费观看| 欧美国产三级| 亚洲欧美日韩国产中文| 美女精品在线观看| 国产伦精品一区二区三区视频孕妇 | 亚洲精品一区二区三区蜜桃久| 99国产精品国产精品久久| 亚洲欧美日韩另类精品一区二区三区 | 国产精品美女久久久浪潮软件| 国内成人精品视频| 亚洲免费在线观看| 亚洲国产清纯| 久久噜噜噜精品国产亚洲综合| 欧美午夜视频| 亚洲人成网站在线观看播放| 久久av二区| 亚洲色图在线视频| 欧美国产日韩xxxxx| 国产一区二区三区无遮挡| 亚洲少妇最新在线视频| 欧美成人一区在线| 午夜一区二区三区在线观看| 欧美日韩极品在线观看一区| 亚洲电影毛片| 久久亚洲午夜电影| 性8sex亚洲区入口| 国产精品一区二区你懂得| 亚洲视频精选在线| 91久久精品国产| 久久综合影视| 在线欧美电影| 浪潮色综合久久天堂| 亚洲欧美日韩精品一区二区| 亚洲国产美女精品久久久久∴| 久久亚洲午夜电影| 亚洲一区免费看| 欧美日韩在线免费观看| 亚洲欧洲在线视频| 麻豆成人91精品二区三区| 欧美一级免费视频| 国产一区二区中文| 久久久综合网站| 欧美综合国产精品久久丁香| 国产区日韩欧美| 久久久久成人精品| 午夜在线成人av| 国精品一区二区三区| 久久影院午夜片一区| 久久久久久电影| 亚洲人体1000| 一区二区三区黄色| 国产精品资源| 久久永久免费| 欧美成人高清| 亚洲一区二区三区四区五区黄| 日韩一区二区精品| 国产精品亚洲综合天堂夜夜| 久久久国产成人精品| 久久一二三国产| 99精品视频一区| 亚洲一级电影| 在线观看日韩av电影| 亚洲国产欧美日韩精品| 欧美日本乱大交xxxxx| 亚洲一级在线观看| 午夜视频在线观看一区二区| 精品1区2区3区4区| 亚洲免费播放| 国产在线视频不卡二| 欧美激情中文不卡| 国产精品成人观看视频免费| 久久成人精品| 欧美大片在线观看一区| 亚洲欧美在线一区| 美女尤物久久精品| 午夜精品久久久久久久男人的天堂 | 欧美www在线| 亚洲欧美在线免费观看| 久久亚洲一区二区三区四区| 一区二区三区视频在线| 久久成人羞羞网站| 亚洲一区二区久久| 蜜桃精品一区二区三区| 亚洲欧美日韩人成在线播放| 久久婷婷av| 欧美在线资源| 欧美极品aⅴ影院| 久久综合久久综合久久综合| 欧美色一级片| 欧美激情二区三区| 欧美一级黄色网| 欧美xx69| 欧美在线视频免费| 欧美片网站免费| 老牛国产精品一区的观看方式| 欧美日韩综合另类| 亚洲国产精品va在线看黑人| 国产日韩欧美视频| 91久久午夜| 最新国产成人av网站网址麻豆| 亚洲综合视频在线| 在线亚洲欧美| 欧美电影免费| 欧美电影免费观看| 在线观看精品| 久久视频在线视频| 免费不卡亚洲欧美| 亚洲第一毛片| 免费成人av| 亚洲成人在线视频网站| 亚洲第一页中文字幕| 久久麻豆一区二区| 蜜桃av噜噜一区二区三区| 狠狠色狠狠色综合人人| 亚洲欧美日韩精品| 久久久欧美精品sm网站| 国产一区成人| 久久精品国产99国产精品| 久久久www成人免费精品| 国产一区二区日韩精品| 欧美有码在线视频| 久久亚洲高清| 亚洲第一偷拍| 欧美1区2区3区| 亚洲人成毛片在线播放女女| 99精品欧美一区二区三区| 欧美三级小说| 亚洲综合日本| 欧美成人一品| 亚洲午夜激情网页| 国产精品视频精品| 久久精品国产成人| 欧美激情一二三区| 一区二区三区不卡视频在线观看| 欧美日韩高清在线一区| 亚洲网址在线| 久久精品国产综合精品| 在线成人激情视频| 欧美人与性动交cc0o| 在线亚洲一区| 久久欧美中文字幕| 亚洲精品老司机| 欧美午夜三级| 欧美综合二区| 日韩亚洲欧美综合| 久久久久久一区二区三区| 亚洲欧洲三级| 国产精品人成在线观看免费 | 久久综合色影院| 日韩视频精品在线| 国产精品一区毛片| 免费成人av在线| 亚洲欧美视频一区二区三区| 免费在线看一区| 亚洲欧美偷拍卡通变态| 亚洲成色www8888| 一区二区日韩伦理片| 黄色日韩在线| 欧美片网站免费| 久久精品一区中文字幕| 亚洲精品五月天| 久久久最新网址| 亚洲午夜精品国产| 亚洲国产精选| 国产欧美一区二区三区视频| 美女网站久久| 欧美亚洲日本一区| 日韩视频在线一区二区三区| 久久亚裔精品欧美| 欧美一级淫片aaaaaaa视频| 亚洲精品网址在线观看| 国内精品免费午夜毛片| 国产九色精品成人porny| 欧美成人精品在线| 久久一区二区三区四区|