sfinae

    5熱度

    2回答

    爲什麼此代碼(類M中的fnc值)不能通過SFINAE規則解決?我發現了一個錯誤: Error 1 error C2039: 'type' : is not a member of 'std::tr1::enable_if<_Test,_Type>' 當然類型是不是會員,它不是在enable_if這種一般版本定義但不是這背後的整體思路,使FNC的這個版本,如果布爾是真的

    1熱度

    2回答

    我一直在嘗試改編this 解決方案,以啓用普通(非成員)函數的存在。 在我的例子中,我有很多全局的字符串實用程序類型的函數,它們使用任何字符串類型T,例如T有一個char const* c_str() const成員函數。 目標是消除奇怪的編譯器錯誤消息,如果用戶試圖傳遞一些沒有c_str()成員函數的類型T,而不是編譯器說的「c_str():no such member function」,I'

    3熱度

    1回答

    Possible Duplicate: Is it possible to write a C++ template to check for a function's existence? 這是非常相似,我earlier question。我想檢查一個模板參數是否包含成員函數。 我試過這段代碼,與我在前一個問題中接受的答案類似。 struct A { int member_func(

    6熱度

    3回答

    以下代碼顯示了一個SFINAE實現,用於檢查類型(基本上是一個類)在編譯時是否包含成員函數member_func。 #define CHECKER(func_name,class_name) sizeof(class_name<T>::template func_name<T>(0)) == 1 #include <iostream> struct A { void member_

    13熱度

    3回答

    我想檢查運算符是否存在於編譯時,如果它不是我只是想讓它忽略,有沒有辦法做到這一點? 例如運營商: template <typename T> QDataStream& operator<<(QDataStream& s, const QList<T>& l);

    2熱度

    1回答

    如果我可以實例化某個模板類,我想使用SFINAE模式執行一些代碼。讓我們想象一下: //Only instantiable with types T for which T.x() is ok: template <class T> class TemplateClass { T t; public: void foo() { t.x(); } }

    1熱度

    2回答

    SFINAE允許我們檢測類型是否具有某些數據成員或成員函數。它是否也可用於檢測是否存在類型?背景:我想知道是否包含<vector>。

    11熱度

    2回答

    我想要幾個重載的全局函數to_string()採用某種類型T並將其轉換爲其字符串表示形式。對於一般情況下,我希望能夠寫: template<typename T,class OutputStringType> inline typename enable_if<!std::is_pointer<T>::value && has_insertion_operator<T>::val

    6熱度

    2回答

    在以下的C++ 0x代碼我試圖通過使用 克隆成員函數(如果它存在),並在副本上落回到 構造克隆對象: struct use_copy_ctor {}; struct prefer_clone_func : use_copy_ctor {}; template<class T> auto clone(T const* ptr, prefer_clone_func) -> decltype(

    4熱度

    4回答

    使用GCC編譯我從下面的代碼中總是得到false。我相信這是一個編譯器錯誤,但有人可能會更清楚。 #include <iostream> template< class T > class has_apply { typedef char yes[1]; typedef char no[2]; template< class U, U u > s