7得票2回答
使用enable_if创建可变参数构造函数,用于有符号和无符号变量

我想为一个类创建一个构造函数,可以使用任何整数类型,但要区分有符号和无符号。我不希望这个构造函数成为该类本身的模板。以下代码不起作用。Visual Studio只是说没有匹配的参数。 class Thing{ public: template<typename Integral...

7得票2回答
如何检测类型是否属于一组泛型类型

如果我拥有 template <typename T> struct A; template <typename T> struct B; template <typename T> struct C; template <typename T&gt...

7得票2回答
模板方法enable_if特化

我有以下代码无法编译。 这是一个模板类中的两个函数,需要带上参数。 typename std::enable_if<std::is_void<Ret>::value, Ret>::type _on_dispatched() { // ... } typena...

11得票1回答
如何禁用某些模板类型的类成员函数

看起来很简单,但是我在std::enable_if的语法方面遇到了一些困难。 实际上情况非常简单。 一个带有模板参数T的模板类。 两个函数不应该为一个特定类型的T实现。 这两个函数没有T的参数或返回值。 一个函数接受一个int,另一个函数返回一个int。 有什么简单的例子吗? 还...

7得票2回答
如何为具有特定类型特征的所有类型编写函数模板?

考虑以下例子: struct Scanner { template <typename T> T get(); }; template <> string Scanner::get() { return string("string"); }...

8得票2回答
std::enable_if 与非类型模板参数

如何在std::enable_if中使用非类型模板参数比较?我无法再次解决这个问题。(之前我曾经解决过这个问题,但是我现在已经找不到代码了,也无法找到之前得到答案的帖子。) 非常感谢您对这个问题提供任何帮助。 template<int Width, int Height, typen...

12得票1回答
如何使用std::enable_if在条件下选择可变参数构造函数?

我试图创建一个类,它应该继承其他类的构造函数,但不继承这些类本身。 在我的类初始化过程中的某一时刻,我想使用完美转发来创建一个类型的对象,该类型的构造函数与给定参数匹配。 除了没有参数的默认构造函数之外,不应有任何歧义。 以下是我的代码:#include <string> ...

14得票3回答
如何使用SFINAE选择最接近匹配的类型特征?

场景: 我有各种类型可以归类为序列容器。 所有序列容器都是数据结构,但并非每个数据结构都是序列容器。 这里有一个代码示例来说明。此示例中唯一的“重要类型”是Array_T。它属于两个类别:它是一个序列容器,由于所有序列容器都是数据结构,因此它反过来也是一个数据结构。 //A sequenc...

8得票1回答
如何使用std::enable_if禁用成员函数

这些类之间有什么区别?具体来说,就是这些带有enable_if的成员函数。 /// Alias of std::enable_if... template <bool B, typename T = void> using Enable_if = typename std::en...

12得票1回答
在使用constexpr函数作为参数时,enable_if在Visual Studio中无法正常工作

我目前正在处理使用Visual Studio 2017编译的问题(如果有帮助,使用/std:c++latest编译)。 问题代码只是根据一些模板化的constexpr函数的结果选择结构体特化。GCC和clang没有编译它的问题。 以下是我的MCVE: #include <type_...