sfinae

    4热度

    3回答

    我目前正试图实现一个toString功能.toString()或std::to_string()这取决于可用于推导型 到目前为止,我有这方面的工作片段的呼叫: #include <iostream> #include <string> template <class T> auto toString(const T& obj) -> decltype(obj.toString(

    2热度

    1回答

    我试图实现一种机制来检测提供的类是否包含一些静态方法。这是很简单的代码,但我不明白为什么decltype()如预期EnableIfHasFooMethod类的专业化不起作用: #include <iostream> struct A { static int Foo() { return 0; } }; template <class T, class = void> str

    1热度

    1回答

    结果我有constexpr函数计算占位符https://godbolt.org/g/JcxSiu的数量, e.g: “Hello %1” 返回1和 “Hello %1, time is %2” 返回2。 然后,我想作出一个函数,如果参数的数量不等于占位符的数量,它不会编译。 template <typename... Args> inline std::string make(const cha

    1热度

    2回答

    我试图创建一个函数重载因此它只能结合(工程)成员函数。我接过来一看在std::mem_fn http://en.cppreference.com/w/cpp/utility/functional/mem_fn template <class Ret, class T> /* unspecified */ mem_fn (Ret T::* pm); 函数签名所以我构建我的参数,例如 templ

    1热度

    2回答

    我想从std::ifstream实现一些读取功能。 它需要分开pod类型和其他类型。 (目前std::string) template <typename T, typename = std::enable_if<std::is_pod<T>::value>::type> T read(std::ifstream& fin); template <> std::string read<st

    0热度

    2回答

    任何人都可以解释为什么下面的代码在Visual Studio 2015 C++中出现错误“错误C2259:'PropertyValue':无法实例化抽象类”? 编译器无法识别派生类PropertyValue中的条件指定函数ConvertToDevice()是否具有相同的签名? 非常感谢, 约翰 #include <type_traits> #include <typeinfo> class

    0热度

    2回答

    我有一组其接收的索引(在示例的int)模板函数和返回给定的类型的值,我使用SFINAE从算术类型分开std::string: // 1 template <typename T> typename std::enable_if<std::is_arithmetic<T>::value, T>::type t(int) { ... } // 2 template <typename T>

    2热度

    1回答

    我想专精getVector成员函数,我正在尝试使用SFINAE。但它只有在Dim为3或更大时才有效。 template <size_t Dim> class Mat { ... template <size_t VDim, typename enable_if<(Dim > 1 && VDim == 0)>::type* = nullptr> void getV

    0热度

    1回答

    的例子考虑下面的代码: // get the return type of == for T1 and T2 template<typename T1, typename T2> using equals_op_type = decltype(std::declval<T1>() == std::declval<T2>()); template <class Container1, cla

    5热度

    2回答

    我想std :: enable_if第一次和挣扎。 任何指导将不胜感激。 当作玩具例子,这里是一个简单的静态矢量类,为此我要定义一个拷贝构造函数,但行为取决于载体的相对大小: 只是将数据复制到更小或相同大小的矢量 复制数据到一个较大的载体中,然后垫用零 其余部分,以便所述载体类是: template <size_t _Size> class Vector { double _data