Eon*_*nil 1 static-assert type-constraints c++11
如何制定static_assert特定的类型约束?
目前,我只想将模板用作unsigned int类型,而不是signed int类型。或者,仅用于整数类型或特定类型名称。static_assert(sizeof(int))仅提供基于大小的断言,并且我不知道如何执行任何额外的检查。
我正在libc++Xcode 4.6.2中使用Clang及其它。这是命令行上的当前编译器信息。
Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
Target: x86_64-apple-darwin12.3.0
Thread model: posix
Run Code Online (Sandbox Code Playgroud)
这并不是真正的static_assert目的,但是您可以这样做:
template<typename T>
struct Type
{
static_assert(std::is_same<T, unsigned int>::value, "bad T");
};
Run Code Online (Sandbox Code Playgroud)
或者,如果您只是想T成为某种无符号整数类型(不是专门针对unsigned int):
template<typename T>
struct Type
{
static_assert(std::is_unsigned<T>::value, "bad T");
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3597 次 |
| 最近记录: |