[英]Implicitly cast parameter to bool
前提:由于宏的潜在问题,我试图创建一个未使用宏实现的定义范围。 这是我最初的尝试
//version for if not defined
bool Defined()
{
return false
}
//version for if defined
bool Defined(bool anything)
{
return true;
}
还有一个用例示例
if(Defined(_DEBUG))
{
Stuff...
}
它将取代
#ifdef _DEBUG
Stuff...
#endif
要么
#define Defined() false
#define Defined(Anything) true
优点:
语法更清晰,范围更广,
该代码不是有条件的,因此编译器将能够轻松地优化代码段。
问题
此过程存在一些问题,第一个是发布此帖子的原因。
题:
您不能传递任何无法隐式转换为布尔值的内容。 有没有一种方法可以将任何对象,数字,指针等隐式转换为布尔值? 我不相信那里,但是我想确定一下,然后再继续。
您可以使用通用模板:
template<class T>
bool Defined(T &&) { return true; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.