typetraits

    1熱度

    1回答

    含義的VC++編譯器警告C4250'class1' : inherits 'class2::member' via dominance對我來說很清楚。 (但見here的解釋。) 我現在有一個序列化的類層次 有一個抽象基類 用的boost ::序列化(1.44.0)時,我得到這樣的警告的問題。 請注意:我的課不形式的任何類型的鑽石般的繼承層次的,可能會導致此警告,但警告是由boost::detail

    5熱度

    3回答

    假設我們有以下的模板類 template<typename T> class Wrap { /* ... */ }; 我們不能改變Wrap。這很重要。 讓我們從Wrap<T>派生類。例如, class NewInt : public Wrap<int> { /* ... */ }; class MyClass : public Wrap<myclass> { /* ... */ }; c

    7熱度

    1回答

    可能重複: Is it possible to write a C++ template to check for a function's existence? 是否可以使用升壓型性狀或其他一些機制,以檢查是否有特定的模板參數有一個操作符/函數,例如作爲模板參數的std::vector有operator[],而std::pair沒有。

    1熱度

    1回答

    我需要兩個有關整數的特徵。如果該類型的行爲像的整數,並且其表示爲真: 第一個會像std::is_integral(或boost::is_integral),但與用戶定義的類型可使用(例如類中封裝一個int,說int_wrapper)像標準整數類型(例如sizeof(T) * CHAR_BITS == std::numeric_limits<T>::digits,如果T是無符號的)但整數類型的定義非

    0熱度

    2回答

    結果類型我想專攻一個模板函數聲明爲: template<typename Type> Type read(std::istream& is); 然後我有很多的靜態實現 static int read_integer(std::istream& is); a.s.o.現在,我想要做一個宏這樣讀的是專業化是簡單的: SPECIALIZE_READ(read_integer) 所以我想我會去

    7熱度

    2回答

    讀一些源代碼,我發現下一個特徵定義: namespace dds { template <typename Topic> struct topic_type_support { }; template <typename Topic> struct topic_data_writer { }; template <typename Topic> struct topi

    4熱度

    4回答

    據我所知,傳遞一個目的是一個函數,它比一個寄存器更大時,這是優選將其傳遞作爲(常數)參考,例如: void foo(const std::string& bar) { ... } 這避免了必須執行可能昂貴拷貝的論點。 然而,通過適合到寄存器中,將它作爲一個(常量)參考充其量是多餘的,在最壞的情況要慢類型時: void foo(const int& bar) { ...

    6熱度

    3回答

    作爲後續this question:我需要這樣一類函數決定: template< typename T > bool Class::Fun <T*> (T& variable) {...} T是否是一個指針或沒有。 在上面引用的問題中,答案是使用部分模板專業化。據我發現,這是不可能的類功能。這是真的?如果是這樣,還有另一種發現T是否是指針的方法嗎?

    1熱度

    4回答

    在下面的代碼中聲明迭代器i的正確方法是什麼? #include <iostream> #include <vector> using namespace std; template<class Mat> void f(const Mat& mat) { typedef typename Mat::value_type::iterator itr; //itr i

    0熱度

    5回答

    我需要創建一個通用的對象載體類。我想出了像 template<typename T> class ObjectCarrier { public: const T& item() const { return item_; } void setItem(T& item) { item_ = item; }