gpt4 book ai didi

c++ - 限制整数模板参数

转载 作者:搜寻专家 更新时间:2023-10-31 00:43:31 24 4
gpt4 key购买 nike

我有这样一段代码:

template<int N, typename T>
class XYZ {
public:
enum { value = N };
//...
}

有没有办法以某种方式限制 N?具体来说,我只想在 N 除以某个数字(比方说 6)时才允许编译。所以它原来不仅仅是一个类型限制。首选方法是在没有 Boost 的情况下执行此操作。

最佳答案

一种 C++03 方法:

template<int X, int Y>
struct is_evenly_divisible
{
static bool const value = !(X % Y);
};

template<int N, typename T, bool EnableB = is_evenly_divisible<N, 6>::value>
struct XYZ
{
enum { value = N };
};

template<int N, typename T>
struct XYZ<N, T, false>; // undefined, causes linker error

对于 C++11,您可以避免一些样板代码并提供更好的错误消息:

template<int N, typename T>
struct XYZ
{
static_assert(!(N % 6), "N must be evenly divisible by 6");
enum { value = N };
};

关于c++ - 限制整数模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10437843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com