typetraits

    0熱度

    1回答

    我想知道是否真的值得包含type_traits頭文件來獲取枚舉的基礎類型。我創建了一個Flags類,我希望儘可能靈活,所以我使用std::underlying_type<T>::type來獲取類型。例如,我可以使用int,但如果用戶想要使用多於32個標誌,該怎麼辦?所以我的問題是,在頻繁使用時,是否可以顯着減慢編譯時間?

    5熱度

    2回答

    我想實現一個模板類(名爲Get <>在這裏),給定結構H,類型Get<H>::type是H本身如果qualified-idH::der不存在,並且是Get<H::der>::type否則。我不明白下面的代碼有什麼問題: #include <iostream> #include <typeinfo> using namespace std; template<class U, class V

    8熱度

    2回答

    是否有可能有靜態斷言提供作爲模板參數提供的類型是否實現參數包列出的所有類型ie。參數包知道std :: is_base_of()? template <typename Type, typename... Requirements> class CommonBase { static_assert(is_base_of<Requirements..., Type>::value, "

    1熱度

    1回答

    看來,要測試常量,必須測試模板參數,但要測試右值,必須測試實際參數。 (這是使用VC++ 2012.)這段代碼說明了我的意思: #include <type_traits> #include <string> #include <iostream> using namespace std; template<class T> void f(T& x) { cout << "

    0熱度

    4回答

    爲了將iterator_type設置爲與T關聯的迭代器類型,我必須爲YYY,ZZZ編寫什麼?如果可能的話,它應該在Visual Studio C++ 2010中工作(但通用標準解決方案也可以)。 template<class T> struct iterator_for { typedef YYY<T>::ZZZ type; } 因此我想: iterator_for<double

    14熱度

    1回答

    我需要使用帶有成員選擇器的template中的offsetof。我想出了一個辦法,如果你不介意的尷尬語法: template <typename T, typename R, R T::*M > constexpr std::size_t offset_of() { return reinterpret_cast<std::size_t>(&(

    0熱度

    1回答

    我在使用boost_type_traits的代碼中遇到問題。 這是代碼的一個相當複雜的一部分,但我可以隔離,讓編譯錯誤的一部分: template<const size_t maxLen> class MyString { public: typedef boost::conditional<(maxLen > 0), char[maxLen+1], std::string> Obj

    1熱度

    3回答

    給定一個類,它有兩個策略模板參數: template<typename PolicyA, typename PolicyB> class widget; 而下面可用的策略類A1,A2,A3,B1,B2,B3。如何傳達1s和2s彼此兼容,但A3僅與B3兼容?也就是說,只有下面的實例被允許: widget<A1, B1> w11; // All valid. widget<A1, B2> w1

    2熱度

    1回答

    我需要檢查給定的類是否有運算符定義的<<(cls, ostream)。如果是這樣,我希望我的函數使用它來寫入ostringstream,否則應該使用樣板代碼。 我知道這個問題之前已被問過。但是,我通常會發現定製的解決方案並不總是在我的編譯器上工作(clang ++)。經過幾個小時的搜索,我終於發現了boost :: type_traits。之前我沒有看過,因爲我認爲C++ 11已經複製了增強過的特

    10熱度

    3回答

    目前我有兩個功能: template<typename Type> bool f(Type* x); template<typename... List> bool f(std::tuple<List...>* x); 有什麼辦法來合併這兩個功能一個額外的模板參數,指示傳遞類型是否是一個元組? template<typename Type, bool IsTuple = /* SOMETHI