static-assert

    0熱度

    2回答

    C++ 11增加了許多新的類模板,它們允許靜態地測試類型特徵,即在編譯時檢測問題。我正在爲一門課寫作測試,我需要確保給定的方法是公開的。 「動態」解決方案是創建一個對象,並調用該方法,那麼如果它不工作,編譯器會抱怨。但可能會發生不同類型的錯誤,並且會導致產生的錯誤消息更加混亂。如果可能的話,最好使用靜態斷言來測試方法訪問級別。 是否有可能還是我真的要創建一個對象? (也,我該怎麼辦,如果我需要的方

    1熱度

    2回答

    static_assert與模板似乎是一個非常不錯的功能。 但是,我無法在編譯時在標準庫中找到用於執行各種測試的函數。 例如,我在尋找一個函數來檢查一個類型是否是另一個類型的子類型。 boost::is_base_of做的工作,但是,在std是一個可比較的功能,所以我不需要依靠提升。 基本上,是否有一個可用於static_assert幷包含在C++ 11標準庫中的函數列表的好源? static_a

    5熱度

    1回答

    我有幾個「靜態常量」數據成員的類。 我想知道如何在編譯時使用static_assert檢查它們的值。 我可以直接將static_assert放在類體中嗎? (把我的static_assert放在每個構造函數中都不是很實用)。

    12熱度

    1回答

    有沒有辦法在編譯時打印constexpr或#define d值的值?我想的std::cout <<相當於或某種方式做這樣的事情 constexpr int PI_INT = 4; static_assert(PI_INT == 3, const_str_join("PI_INT must be 3, not ", const_int_to_str(PI_INT))); 編輯:

    19熱度

    4回答

    我已經使用(和見過使用)static_assert到模板的參數值的標誌不期望的值。但是,對於我遇到的所有情況,通過SFINAE禁用這些不需要的值似乎更好,更優雅。例如 template<typename T, class = std::enable_if<std::is_floating_point<T>::value>::type> struct Foo { ... }; ,而

    5熱度

    1回答

    我注意到,當實例化爲typedef'ed時,類模板中的靜態斷言不會被觸發。 #include <type_traits> template <typename T> struct test_assert { static_assert(std::is_same< T, int >::value, "should fail"); }; typedef test_assert<

    0熱度

    1回答

    所以,我想使用Boost庫靜態時檢查我的模板正在使用的某些基類,例如: template <class T> class A { // Code here } 所以,我想用BOOST_STATIC_ASSERT((boost::is_base_of<DesiredBaseClass, T>::value)),這對GCC很有用。但是,Eclipse對此非常惱火,並列出了錯誤(來自它

    3熱度

    1回答

    序言: switch(nValue) { case X: ... case Y: ... default: ASSERT_FOR_DEFAULT(nValue); } ASSERT_FOR_DEFAULT是一個宏,將顯示一個(自定義)斷言對話框,報告打「默認情況下, 」。是的,這個宏用於運行時斷言,而不是編譯時斷言。但是,我只需要它,任何常量值(編譯時)都不能傳遞給這個

    7熱度

    5回答

    這裏是我想要做的 enum First { a, b, c, nbElementFirstEnum, }; enum Second { a, b, c, nbElementSecondEnum, }; static_assert( First::nbElementFirstEnum == Seco

    15熱度

    3回答

    在我的應用程序中,內存使用情況非常關鍵。因此,我有特定的斷言,在編譯時檢查內存大小,如果大小與我們之前認爲正確的大小不同,則給出static_assert。 我已經定義一個宏是這樣的: #define CHECKMEM(mytype, size) static_assert((sizeof(objectType) == size)), "Size incorrect for " #mytype "