具有多个约束的 C++ 模板

标签 c++ templates generics constraints

在 C# 中,我习惯于在泛型方法或类型中指定多个约束,如下所示:
How do I specify multiple generic type constraints on a single method?

今天我第一次开始使用 C++,在谷歌搜索模板多重约束 时我无法找到任何有用的东西。
看起来这是不可能的,每个人都知道,因此没有问题。

我知道在 C# 中,编译器对泛型的验证比在 C++ 中要强得多,这就是为什么我觉得不能将我的类型限制为多个父类(super class)型是不对的。

最佳答案

这在今天的 C++ 中是可能的,但语法相当复杂。在下一个主要的 C++ 版本中,我们很可能会得到 concepts 的版本。 ,这让这件事变得容易多了。

在 C++14 中,您发布的 C# 示例可能如下所示:

template <class TResponse, class TRequest,
          std::enable_if_t<std::is_base_of<MyClass, TRequest>::value &&
                           std::is_base_of<MyOtherClass, TResponse>::value>* = nullptr>
TResponse Call(TRequest request);

关于具有多个约束的 C++ 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30730988/

相关文章:

c++ - VS C++ ASM 到 GCC ASM

c++ - 与 C++/OpenMP 的所有相对所有比较的对称性并行化嵌套 for 循环

c++ - 我如何检查 firebreath 插件中的内存泄漏

c++ - 编译错误 : could not deduce template argument

c++ - 错误 : expected identifier before 'template'

c++ - 通过串联创建原始字符串时,是否会还原三字母替换?

c++ - 调用构造函数时程序停止运行,c++

c# - 从通用接口(interface)继承

go - 使用外部包中的公共(public)成员处理不同结构的通用函数?

c# - 将类型本身而不是实例保存在字典中