将参数隐式强制转换为布尔
Implicitly cast parameter to bool
前提:由于宏存在潜在问题,我正在尝试创建一个未使用宏实现的Define作用域。这是我第一次尝试
//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
优点:
语法更干净,范围更广,
此代码不是有条件的,因此编译器将能够轻松地优化代码段
问题
此过程有几个问题,第一个是发布此帖子的原因。
问题:
不能传入任何不能隐式转换为bool的内容。有没有一种方法可以将任何对象、数字、指针等隐式转换为布尔?我不相信有,但在我继续之前,我想确定一下。
您可以使用通用模板:
template<class T>
bool Defined(T &&) { return true; }
相关文章:
- 变量定义到C++布尔值转换
- fstream / ifstream / ofstream 对象如何转换为布尔值
- 将uintptr_t转换为布尔值会使 SSO 基准速度减慢数倍
- 将参数隐式强制转换为布尔
- 将uint64_t位掩码转换为 std::布尔数组
- 在目标 c++ 中将 CFTypeRef 转换为布尔值
- 无法将'Class::operator=='从"布尔"类型(类::)(类*)转换为"布尔"类型
- n-ary布尔语法从中缀到前缀的Boost::Spirit转换?
- isspace 函数的性能警告,从 int 转换为布尔值
- 将返回表达式隐式转换为布尔值
- 将结构转换为布尔值
- 整数在 C++ 中没有被类型转换为布尔值
- 为什么我的变体将 std::string 转换为布尔值
- 为什么使用 int 的转换,而不是布尔值
- lambda 转换为布尔值,而不是推导函数指针类型
- 从常量字符串到布尔值的隐式强制转换
- 我无法将'2D array whit bool'转换为"空 2D 数组布尔值"(用于生命游戏)
- 尝试将字符串变量转换为布尔值会导致 "true" 和 "false" 都等于 0
- Typedef shared_ptr转换为<T>布尔值
- 正在缩小MSVC中到布尔警告的转换范围