enable-if

    3熱度

    1回答

    我想寫一個通用的過濾函數,在多維數組(任意級別)的給定採樣座標處執行線性插值。爲此,我需要一個遞歸函數模板,遍歷數組的所有維度,直到它遇到一個值及其相關類型。我使用boost :: enable_if來檢測何時停止遍歷維度。它工作正常,直到我試圖「滲透」返回值/類型到最頂層的函數。爲此,我試圖使用C++ 0x類型推斷,但它似乎沒有與boost :: enable_if良好混合。 予分離的問題降低到

    0熱度

    3回答

    什麼是調用模板類型的成員函數的好方法?以下foo()代碼是否僅針對定義了bla()函數的類型進行編譯? class A { void bla(); }; template<typename T> void foo() { T t; t.bla(); } int main() { foo<A>(); return 0; } 我可以使用boos

    9熱度

    1回答

    我目前正在爲元組編寫算術運算符重載的過程。操作符迭代元組以對其每個單獨的元素執行操作。下面是運營商的定義+ =: template< typename... Ts, std::size_t I = 0 > inline typename std::enable_if< I == sizeof... (Ts), std::tuple<Ts...>& >::type operator +=(std:

    5熱度

    1回答

    正如問題所述,是否有人會使用struct版本超過正常條件?

    4熱度

    1回答

    template<typename T> std::istream & read(std::istream & istr, typename std::enable_if<std::is_pod<T>::value, T>::type & value) { return istr.read(reinterpret_cast<char*>(&value), sizeof(T)); }

    1熱度

    2回答

    我想實現一個條件指針解引用函數。其基本思路是: return is_pointer(arg) ? *arg : arg 爲了限制需要專業化的數量,我試圖用右值引用了其中arg不是指針的情況。這是我目前的實現(std::cout在那裏僅用於調試目的): template< typename T > inline typename std::enable_if< std::is_pointer<

    4熱度

    1回答

    我有一個帶有模板參數的類,它應該決定它包含的兩種數據類型中的哪一種。基於這個參數,我想用兩種不同的方式實現一個成員函數。我嘗試使用Boost Enable-If,但沒有成功。下面是我最吃驚不工作的代碼版本: #include <boost/utility/enable_if.hpp> enum PadSide { Left, Right }; template <int> struct dum

    3熱度

    3回答

    我有什麼辦法可以簡化下列語句嗎? (可能使用boost::enable_if)。 我有一個簡單的類結構 - Base基類,Derived1,Derived2繼承自Base。 我有以下代碼: template <typename Y> struct translator_between<Base, Y> { typedef some_translator<Base, Y> type; }

    6熱度

    1回答

    繼承我想部分專門用於非字符數組的一個特點: template<typename T> struct is_container : std::false_type {}; template<typename T, unsigned N> struct is_container<T[N]> : std::enable_if<!std::is_same<T, char>::value, std

    6熱度

    4回答

    我通常會聲明我的類和模板,然後在(在當前的頭文件中)定義它們的方法。我發現這樣更容易閱讀。那麼,我遇到了一個案例,我無法弄清楚一個工作類型簽名是否在一個不符合類的定義中使用。下面是我在做什麼一個簡單的例子,說明該問題: template <class T> struct Foo { Foo(T a, T b); template < class Ite