gpt4 book ai didi

c++ - 当作为参数传递给函数时,是否可以在表达式被求值之前捕获表达式的内容?

转载 作者:太空宇宙 更新时间:2023-11-04 15:32:43 27 4
gpt4 key购买 nike

假设我有一个简单的函数,它接受一个条件,然后返回一些东西。

例如:

bool is_even(int num){
return (num % 2 == 0);
}
void Foo(conditional)
{
if(conditional)
std::cout << "Bar" << std::endl;
}

是否有可能在函数求值之前将参数或表达式作为一个整体获取到条件语句中?

所以我的意思是,如果条件是 is_even(2),我能否在计算之前得到表达式“is_even(2)”,而不是真实值 (True)?

最佳答案

一种方法是使用将 () 运算符重载为 bool 的类:

struct Bar
{
bool operator()() const;
};

template <typename Y>
void Foo(const Y& y)
{
if(y()){
std::cout << "Bar" << std::endl;
}
}

然后您可以将任何状态封装到 Bar 中。如果您不喜欢在求值时需要编写 y() 这一事实,您可以通过定义 conversion 运算符来进一步调整语法 bool 而不是:

struct Bar
{
operator bool() const;
};

template <typename Y>
void Foo(const Y& y)
{
if (y){
std::cout << "Bar" << std::endl;
}
}

在这样做的过程中,您遇到了 actors,以及那美妙的 C++ 工程 Boost Spirit 的基础。参见 https://en.wikipedia.org/wiki/Actor_modelhttps://theboostcpplibraries.com/boost.spirit

关于c++ - 当作为参数传递给函数时,是否可以在表达式被求值之前捕获表达式的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46003133/

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