用户定义的模板约束只接受用户定义的模板class
User defined template constraints to accept only a user-defined template class
有没有办法创建您自己的 enable_if 喜欢的条件?
我有一个模板 class:Foo<int, int, int>
并且我有另一个模板 class 需要一个类型:Template <T> class Bar
.
我想限制 Bar
class 使其采用的类型只能是 Foo
class 专业化中的任何一个。例如,可以采用 Foo<0, 0 ,1>
但不能采用 int 类型。
是否有一种通过用户定义的 enable_if 来要求此约束的简洁方法?有没有我没有考虑过的更好的方法?理想情况下,解决方案应该相对紧凑和清晰,可能采用 std::is_arithmetic 的工作方式。
感谢您的时间和建议。
无需提取任何库类型。最简单的方法是一个很好的旧专业:
template <typename> class Bar;
template<int a, int b, int c>
class Bar<Foo<a, b, c>> {
// Define `Bar`
};
用 Foo<...>
类型实例化 Bar
会选择特化,而用任何其他类型实例化它会遇到不完整的 class 声明的死胡同Bar<T>
.
有没有办法创建您自己的 enable_if 喜欢的条件?
我有一个模板 class:Foo<int, int, int>
并且我有另一个模板 class 需要一个类型:Template <T> class Bar
.
我想限制 Bar
class 使其采用的类型只能是 Foo
class 专业化中的任何一个。例如,可以采用 Foo<0, 0 ,1>
但不能采用 int 类型。
是否有一种通过用户定义的 enable_if 来要求此约束的简洁方法?有没有我没有考虑过的更好的方法?理想情况下,解决方案应该相对紧凑和清晰,可能采用 std::is_arithmetic 的工作方式。
感谢您的时间和建议。
无需提取任何库类型。最简单的方法是一个很好的旧专业:
template <typename> class Bar;
template<int a, int b, int c>
class Bar<Foo<a, b, c>> {
// Define `Bar`
};
用 Foo<...>
类型实例化 Bar
会选择特化,而用任何其他类型实例化它会遇到不完整的 class 声明的死胡同Bar<T>
.