2012-06-16 17 views
5

मेरे पास "स्थिर कॉन्स" डेटा सदस्यों के साथ कई कक्षाएं हैं। मैं जानना चाहता हूं कि static_assert के साथ संकलन समय पर उनके मूल्यों को कैसे जांचें। क्या मैं सीधे कक्षा के शरीर में static_assert डाल सकता हूं? (प्रत्येक कन्स्ट्रक्टर में मेरा static_assert डालना बहुत व्यावहारिक नहीं है।)स्टेटिक कॉन्स क्लास डेटा सदस्यों की जांच करने के लिए स्टेटिक जोर?

उत्तर

4

हां, static_assert() हर जगह एक घोषणा भी हो सकती है। इसमें कक्षा का शरीर शामिल है:

class C { 
public: 
    enum E { 
     A, B, C, 
     NumEes 
    }; 
    constexpr Foo foos[] = { {...}, {...}, {...} }; 
    static_assert(NumEes == sizeof foos/sizeof *foos, "size mismatch"); 

    // ... 
}; 
संबंधित मुद्दे