Qua*_*ees 4 c++ templates class-template c++17 compile-time-type-checking
我有一个像这样的模板类:
template<typename T, unsigned int size>
class Array
{
public:
static const unsigned int SIZE = size;
// ...
private:
T data[SIZE];
};
Run Code Online (Sandbox Code Playgroud)
有没有办法添加编译时检查,使 an 的大小Array<T,XXXX>永远不会超过某个值?
就像如果该值为512,则不应编译:
Array<int, 1000> arr;
C++ 化我的代码的想法对我来说是新的,所以我愿意接受任何指南或在线进一步学习来帮助解决这个问题,因为我什至不知道要谷歌搜索什么。我尝试过的一切似乎都还很遥远。
有没有办法添加编译时检查,使 an 的大小
Array<T,XXXX>永远不会超过某个值?
您可以requires在 C++20 中使用它
template<typename T, unsigned int size> requires (size < 512)
class Array
{
// .....
};
Run Code Online (Sandbox Code Playgroud)
或者,您可以static_assert在类定义中的条件中向用户发送有意义的消息。
template<typename T, unsigned int size>
class Array
{
static_assert(size < 512, "Array size exceeded");
// ....
};
Run Code Online (Sandbox Code Playgroud)