我刚刚运行了 C++ requires关键字,想知道到目前为止我的理解是否正确:requires和enable_if都为模板提供编译时间约束。如果需要约束将被包括在内。
其中requires提供了一种约束函数参数的方法,enable_if的主要目的是将编译时转换限制为模板类型本身的某些条件。
例子:
#include <type_traits>
template<typename T>
concept T AdditiveGroup
{
return requires(const T pA, const T pB)
{
{ pA + pB }->T;
};
};
template<typename T>
typename std::enable_if<std::is_integral<T>::value, bool>::type
addElements(const T pA, const T pB)
{
return (pA + pB);
}
在这里,当且仅当 pA 和 pB 可以添加时,该概念才有效,而 enable_if 条件将评估限制为整数类型。
感谢您让我知道我是否做对了!
PS:我还不太确定require约束的语法,这似乎有所不同。另外,暂时不知道哪个编译器接受它们,所以感谢任何提示!