sfinae

    3熱度

    1回答

    我現在有一類,它是一個構造函數: template<class TX, class TY> MyClass(const TX &x, const TY &y) ,並允許我基於2個值來構建我的課。 我希望能夠建立我的課從C++ 2011 template<class TG, class TE> MyClass(TG &generator, TE &engine) 如何,因爲在這種形式,它是同

    1熱度

    1回答

    的SFINAE原則沒有什麼似乎在Visual Studio中非常簡單的工作2010年 #include <type_traits> #include <iostream> struct MyStruct { int value; MyStruct(int value = 42) : value(value) { } const int& getInt() co

    10熱度

    1回答

    比方說,我有這些模板別名: enum class enabler {}; template <typename T> using EnableIf = typename std::enable_if<T::value, enabler>::type; template <typename T> using DisableIf = typename std::enable_if<!T::v

    1熱度

    1回答

    我不知道SFINAE原則/ enable_if可以用來「僞造」類模板方法的部分專業化。例如,給定類別模板Foo,其中定義了Foo::bar的兩個版本。我想啓用一個,並禁用其他如果T2 = int(例如),反之亦然。 template<typename T1, typename T2> struct Foo { void bar(); }; // Enable if T2 !=

    5熱度

    1回答

    SFINAE有問題。我需要能夠確定一個Type是否有一個成員函數operator-> defined,而不管它的返回類型。示例如下。 這個類在測試儀中。它用一個返回類型X *定義了operator - >()。因此我不會知道'X'是什麼地方硬編碼到處。 template <class X> class PointerX { ... X* operator->() cons

    6熱度

    1回答

    考慮下面的程序: #include <type_traits> enum class dummy {}; template <typename T> using EnableIf = typename std::enable_if<T::value, dummy>::type; template <typename T> using DisableIf = typename std::

    0熱度

    2回答

    我正在嘗試使用boost::is_base_of來檢測CRTP基類Generic是否可以標識其同級,也就是T也是從中派生的類。 如Generic<T>::init()所示,我想使用這些機制,以便允許類Generic<T>添加函數指針其對等體之一Bar1或Bar2(從中T也導出)到地圖。不幸的是,boost::is_base_of無法檢測到類別,例如Bar3,即T不能從中導出。 #include <

    0熱度

    1回答

    我在使用G ++ 4.1.2時遇到了SFINAE問題。 下面的代碼工作正常爲4.6: #include <stdio.h> class Test { public: int x; }; template <typename T> inline T f(T v) { return v;} // Definition #2 template <typename T>

    2熱度

    1回答

    我想根據具有特定Fusion序列的boost::fusion::invoke()是否可以工作來實現部分類模板特化。但在這種情況下,替代失敗似乎是一個錯誤。 我想我需要一個is_callable_with_these_sequence_parameters<F, Seq>元功能的作品。誰能幫忙? struct F { template<class> struct result;

    20熱度

    4回答

    是否有可能使用SFINAE來檢測C++中是否存在類?如果可能,那麼如何? 假設我們有一個只能由庫的某些版本中提供的類。我想知道是否可以使用SFINAE來檢測類是否存在。檢測結果是任意的,例如一個枚舉常量,如果存在則爲1,否則爲0。