typetraits

    2熱度

    4回答

    如何使用模板查找使用模板圖層時哪些類型是由哪些類型組成的? 讓我們 template <typename Super> class A : public Super {}; template <typename Super> class B : public Super {}; template <typename Super> class C : public Super {};

    58熱度

    2回答

    通俗地說,平凡類型,標準版式與POD之間有什麼區別? 具體而言,我想確定new T對於任何模板參數T是否與new T()不同。我應該選擇哪種類型的性狀is_trivial,is_standard_layout和is_pod? (作爲一個方面的問題,可在任何該等型性狀在沒有編譯器魔術實施?)

    11熱度

    1回答

    假設我有一些模板類,具體取決於類型T。 T幾乎可以是任何東西:int,int*,pair <int, int>或struct lol;它不能是void,參考或任何cv-qualified雖然。對於一些優化,我需要知道我是否可以繼承T。所以,我需要一些特質類型is_subclassable,這些特質被確定爲基本特徵或通過一些SFINAE技巧的邏輯組合。 在原始示例中,int和int*不是可分類的,而

    11熱度

    2回答

    如何確定類型是否來自模板類?特別是,我需要確定模板參數是否具有std::basic_ostream作爲基類。通常std::is_base_of是工作的工具。但是,std::is_base_of僅適用於完整類型而非類模板。 我正在尋找類似的東西。 template< typename T > bool is_based_in_basic_ostream(T&& t) { if(std:

    6熱度

    2回答

    我想寫一個函數,可以使用C++ 0x的type_traits功能處理char & wchar_t。是的,我知道如何在沒有type_traits的情況下做到這一點,但我希望使用type_traits來更好地理解該功能。 template <typename T> void SplitIt(T* base, T* ext, const std::basic_string<T>& fullFilePa

    5熱度

    2回答

    我想確定是否有任何可變類模板是另一個類的基礎。通常我會使用std :: is_base_of,但我不認爲我的用例適合,而且我不確定是否已經有某些東西在std或boost中來處理這個問題。我希望可變基類模板的參數包來自另一個可變類模板。下面是一些例子代碼,希望能解釋什麼,我想做的事: 用法: is_variadic_base_of< VarClassTemplA , ClassD

    8熱度

    3回答

    如何檢查C++類型是否可以複製?我有一個類,它使用具有指定模板類型T的memcpy和memcmp函數,並且我想爲類型啓用斷言,這對於使用memcpy複製是不安全的。有沒有辦法做到這一點(與現有的標準)?

    5熱度

    1回答

    我一直在試圖通過Boost type-traits頭文件,現在感覺很不舒服,因爲無數#define提供了強烈的不可讀性。然後更多#define。 具體而言,我有興趣弄清楚以下三個特徵:如果類型T是數組,類或枚舉。 任何人都可以幫助建議某種方式來破譯明顯的瘋狂背後的方法嗎?怎麼樣,你從一個類型,任何相關的閱讀材料等弄清楚特質背後的理論

    0熱度

    4回答

    我想爲char,short,long和long long專門設計一個類模板。這種專業化也適用於整型類型的有符號和無符號變體。 我知道boost庫和std :: tr1/C++ 0x實現了is_signed/is_unsigned和make_signed/make_unsigned type_traits。但是我怎樣才能從char類型中刪除任何簽名的規範(注意:簽名itype!= itype的唯一整

    9熱度

    1回答

    我現在有一個可變參數函數,它接受的任意類型(杜)的參數的任意數,但是,我想限制僅是POD的類型的人,也同樣尺寸或更小而不是虛空*。 的void *的檢查很簡單,我只是做了這一點: static_assert(sizeof...(Args) <= sizeof(PVOID), "Size of types must be <= memsize."); 但是我不能工作,如何做的std :: is_