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

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

Imperfect C++ 讀書筆記(一)

Posted on 2008-11-17 22:27 Batiliu 閱讀(894) 評論(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>
            一区二区三区欧美成人| 亚洲国产日韩欧美在线动漫| 99精品国产在热久久婷婷| 欧美日本三级| 欧美一区二区三区喷汁尤物| 亚洲尤物在线| 在线观看视频日韩| 亚洲国产天堂网精品网站| 欧美日韩亚洲一区二区| 久久精品国产第一区二区三区| 欧美一区二区在线| 亚洲高清一区二| 亚洲美女av在线播放| 国产色婷婷国产综合在线理论片a| 久久久久国产一区二区| 欧美精品免费视频| 久久精品国产一区二区三区免费看| 久久夜色撩人精品| 亚洲自拍偷拍福利| 男女激情久久| 久久av在线看| 欧美日韩亚洲一区| 欧美成人午夜激情视频| 国产精品免费在线| 亚洲黄色成人久久久| 国产欧美日韩在线视频| 亚洲精品国产精品国自产观看浪潮| 国产婷婷一区二区| 99精品视频免费全部在线| 伊人成人在线| 亚洲欧美日韩区| 亚洲视屏一区| 欧美成人免费在线观看| 久久精品亚洲精品| 国产精品久久久久久久久动漫| 欧美成年人视频| 国产亚洲视频在线观看| 中文欧美在线视频| 夜夜嗨av一区二区三区网页| 久久一区二区三区国产精品| 久久激情视频久久| 国产精品美女999| 99re66热这里只有精品3直播| 亚洲成色精品| 久久精品一级爱片| 久久精品一二三区| 国产精品网站在线| 亚洲午夜小视频| 亚洲天堂视频在线观看| 欧美另类一区| 亚洲欧洲一区二区天堂久久| 亚洲国产精品久久久久秋霞不卡| 欧美在线视频网站| 久久www成人_看片免费不卡| 国产精品欧美经典| 亚洲欧美久久久| 午夜精彩国产免费不卡不顿大片| 欧美日韩性视频在线| 99视频有精品| 亚洲一区三区视频在线观看 | 亚洲欧美久久久| 性欧美xxxx视频在线观看| 国产精品久久网站| 亚洲欧美日韩中文视频| 久久er99精品| 黄色精品在线看| 久久青草欧美一区二区三区| 欧美bbbxxxxx| 日韩午夜在线播放| 欧美三区在线视频| 一区二区三区四区五区视频| 中文网丁香综合网| 国产精品欧美日韩一区| 亚洲欧美日韩人成在线播放| 久久五月天婷婷| 亚洲欧洲综合| 欧美午夜精品久久久久免费视| 亚洲视频在线播放| 久久视频免费观看| 亚洲精品麻豆| 国产精品九九久久久久久久| 欧美亚洲一级片| 欧美电影免费观看大全| av不卡在线| 国产欧美在线播放| 蜜臀久久99精品久久久久久9 | 久久综合狠狠| av72成人在线| 久久久久久亚洲综合影院红桃| 亚洲欧洲一区二区三区在线观看| 欧美深夜福利| 久久激情视频| 日韩西西人体444www| 久久久久久9| 99在线精品视频| 国产一区二区毛片| 欧美精品成人一区二区在线观看| 在线一区日本视频| 欧美暴力喷水在线| 午夜精品久久久久久久99水蜜桃| 激情综合五月天| 国产精品www色诱视频| 看片网站欧美日韩| 亚洲男人第一av网站| 亚洲二区免费| 久久精品中文字幕一区| 亚洲午夜av| 亚洲欧洲一区| 精品99一区二区| 国产乱码精品一区二区三区不卡| 欧美电影打屁股sp| 久久精品国产精品亚洲综合| 中日韩在线视频| 亚洲高清自拍| 美女脱光内衣内裤视频久久网站| 亚洲欧美日韩爽爽影院| 亚洲精品孕妇| 亚洲国产精品va在线看黑人| 国内久久精品| 国产乱肥老妇国产一区二| 欧美日韩视频不卡| 欧美—级高清免费播放| 久久综合久久综合这里只有精品| 欧美亚洲综合另类| 亚洲永久免费av| 中日韩美女免费视频网站在线观看| 亚洲丰满在线| 欧美国产综合| 欧美激情亚洲国产| 男女激情视频一区| 免费在线亚洲欧美| 免费中文字幕日韩欧美| 蜜桃精品久久久久久久免费影院| 久久精品一区二区国产| 久久国内精品自在自线400部| 欧美一区二区三区在线观看 | 狠狠色伊人亚洲综合成人| 国产精品一国产精品k频道56| 国产精品大片| 国产精品v亚洲精品v日韩精品| 欧美色图首页| 国产精品丝袜91| 国产情侣一区| 国内精品久久久久久影视8| 国产亚洲女人久久久久毛片| 国产资源精品在线观看| 在线免费观看日韩欧美| 亚洲人成77777在线观看网| 亚洲精选91| 亚洲综合色自拍一区| 欧美一区二区三区视频免费| 久久黄色小说| 亚洲第一黄色| 一二三区精品福利视频| 亚洲综合色网站| 久久久久久自在自线| 免费欧美网站| 欧美三级视频在线播放| 国产欧美视频一区二区| 在线欧美福利| 99精品欧美一区二区三区综合在线 | 免费91麻豆精品国产自产在线观看 | 欧美xart系列在线观看| 亚洲精品一区在线| 亚洲视频日本| 久久精品国产亚洲精品| 欧美jizz19hd性欧美| 欧美视频日韩| 一区二区在线观看av| 亚洲美女尤物影院| 久久国产婷婷国产香蕉| 欧美激情按摩在线| 亚洲综合清纯丝袜自拍| 玖玖在线精品| 国产精品视频yy9099| 韩日欧美一区二区三区| 亚洲视频axxx| 美女网站在线免费欧美精品| 99视频国产精品免费观看| 久久精品国产视频| 国产精品久久久久久久久久免费看 | 欧美激情第9页| 中文亚洲欧美| 欧美大片va欧美在线播放| 国产精品久久网| 亚洲精品一区二区三区99| 久久精品成人欧美大片古装| 亚洲精品久久久久中文字幕欢迎你| 欧美一区1区三区3区公司| 欧美日韩一二三四五区| 亚洲大胆人体在线| 欧美在线关看| 亚洲最新在线| 欧美精品 日韩| 亚洲大胆美女视频| 久久久久一区二区| 亚洲欧美中文字幕| 欧美午夜www高清视频| 日韩网站免费观看| 欧美国产一区二区|