sfinae

    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

    2熱度

    2回答

    我是一名初學C++開發人員,我對通過模板的toString和ostream運算符集成有疑問。 我有這樣的代碼: struct MethodCheckerTypes{ typedef unsigned char TrueType; typedef long FalseType; }; template<typename T>struct HasToStri

    13熱度

    5回答

    A(稍微)過時article探索的方式來使用decltype與SFINAE沿檢測是否一種類型的支持特定運營商,如==或<。 這裏的示例代碼來檢測一個類支持<操作者: template <class T> struct supports_less_than { static auto less_than_test(const T* t) -> decltype(*t < *t, cha

    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_

    6熱度

    2回答

    有沒有一種方法,使用SFINAE來檢測一個給定的類是否有一個自由函數重載? 基本上,我已經得到了以下解決方案: struct has_no_f { }; struct has_f { }; void f(has_f const& x) { } template <typename T> enable_if<has_function<T, f>::value, int>::type c

    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(

    13熱度

    3回答

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