gpt4 book ai didi

c++ - 我的代码如何在编译时做一件事,而在运行时做另一件事?

转载 作者:行者123 更新时间:2023-12-03 10:05:09 25 4
gpt4 key购买 nike

我正在实现一个 constexpr int foo(); 函数。在 foo() 的主体中,我想在编译时做一些不同的事情(并且可能返回一些不同的东西),而在运行时做一些不同的事情。
使用 C++20,我可以使用 std::is_constant_evaluated :

constexpr int foo() { return std::is_constant_evaluated() ? 123 : 456 };
但是如果我使用的是 C++17(或更早版本)怎么办 - 我可以用同样的效果做什么?
注意:特定于编译器的解决方案是可以接受的(尽管不太理想)。

最佳答案

Note: Compiler-specific solutions are acceptable (though less desirable).


让我们提一下最明显的: gcc__builtin_is_constant_evaluated()至少自 9.2.0 起有记录. clangclang-9 起具有相同的内置功能.

关于c++ - 我的代码如何在编译时做一件事,而在运行时做另一件事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64970832/

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