在 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/