gpt4 book ai didi

c++11 - 如何使用 C++11 static_assert 进行类型约束?

转载 作者:行者123 更新时间:2023-12-03 23:32:18 25 4
gpt4 key购买 nike

我该如何制作 static_assert对于特定类型约束?

目前我只想为 unsigned int 制作我的模板类型,但不是 signed int类型。或者,仅适用于整数类型或特定类型名称。 static_assert(sizeof(int))仅提供基于大小的断言,我不知道如何执行任何额外的检查。

我正在使用 Clang 及其 libc++在 Xcode 4.6.2 中。这是有关命令行的当前编译器信息。

Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
Target: x86_64-apple-darwin12.3.0
Thread model: posix

最佳答案

那不是真的static_assert是为了,但你可以这样做:

template<typename T>
struct Type
{
static_assert(std::is_same<T, unsigned int>::value, "bad T");
};

或者,如果您只是想要 T成为某种类型的无符号整数类型(不是专门的 unsigned int ):
template<typename T>
struct Type
{
static_assert(std::is_unsigned<T>::value, "bad T");
};

关于c++11 - 如何使用 C++11 static_assert 进行类型约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16350384/

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