gpt4 book ai didi

c++ - 现代 C++ 设计中的 CompileTimeChecker 未按预期工作

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:13:23 26 4
gpt4 key购买 nike

我最近开始阅读 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/

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