[英]How to declare'n'run lambda in a single expression in C++11?
像几乎所有自重的项目一样,我自己的项目也具有在调试模式下检查某些条件的宏:
#ifndef NDEBUG
# define DCHECK(x) if (!(x)) { ... }
#else
# define DCHECK(x)
#endif
但是现在我想DCHECK()
一些复杂的条件,例如文件权限:
...
auto has_permissions = [fd] {
struct stat st;
if (fstat(fd, &st) == 0) {
return (st.st_mode & (S_IRUSR | S_IWUSR)) == (S_IRUSR | S_IWUSR);
}
return false;
};
DCHECK(has_permissions());
...
另外,我也不想用除了唯一的DCHECK()
以外没有使用过的lambda污染我的代码,因为在Release模式下,它们将被标记为未使用的变量。
因此,问题是:是否存在一种紧凑的方式编写DCHECK()
语句来声明,运行和检查任何复杂条件?
PS使用lambda不是强制性的-这只是我的建议。
可以重新实现PPS DCHECK()
,但是所有现有的调用都应该无需修改就可以正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.