作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我最近开始阅读 Andrei Alexandrescu 的《现代 C++ 设计》。阅读编译时断言后,我尝试了以下代码:
template<bool> struct CompileTimeChecker{ CompileTimeChecker(...){};};template<> struct CompileTimeChecker<false>{};#define STATIC_CHECK(expr, msg) \{\ class ERROR_##msg{}; \ (void)sizeof(CompileTimeChecker<(expr)!=0>((ERROR_##msg()))); /*Line 1*/ }int main(){ STATIC_CHECK(sizeof(char)>sizeof(int),TypeTooNarrow); /*Line 2*/ STATIC_CHECK(sizeof(char)<sizeof(int),TypeTooNarrow); /*Line 3*/}
由于第 2 行,代码不应编译,但编译正常。如果我将第 1 行更改为
(void)(CompileTimeChecker<(expr)!=0>((ERROR_##msg()))); /*Line 1*/ }
或
new CompileTimeChecker<(expr)!=0>((ERROR_##msg())); /* Line 1*/ }
它按预期工作。我不明白。
最佳答案
尝试 updated version来自 Loki library .
关于c++ - 现代 C++ 设计中的 CompileTimeChecker 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3934664/
我最近开始阅读 Andrei Alexandrescu 的《现代 C++ 设计》。阅读编译时断言后,我尝试了以下代码: template struct CompileTimeChecker{ C
我是一名优秀的程序员,十分优秀!