コンパイル期間制約(1)

1091 ワード

運行期間を減らすためには、タイプの安全によって、プログラムが崩壊するために、いくつかのテンプレートを使用して、コンパイル期間の型式検査を行います.
                  一つのタイプがPOD(plin old dataの略語であるかどうかを判断します.一つの一般的な古いデータ構造(POD)はデータ構造です.それは受動的なコレクションのフィールド値としてだけで、封包またはotheobject-orented特徴を使用しません.)              
template <typename T>
struct must_be_pod
{
    must_be_pod() {
        void (*p)() = constraints;
    }
    static void constraints() {
        union {
            T T_is_not_pod;
        };
    }
};
class node
{
public:
    node() {}
    int operator[](int index) const {
        return 0;
    }
};

int main()
{
  //  must_have_base<father,children> a;
  //  must_be_subscriptable<char[]> a;
    must_be_pod<node> a;
    //must_be_subscriptable_as_decayable_pointer<int*> a;
    cout << "Hello World!" << endl;
    return 0;
}