【发布时间】:2019-11-21 08:52:10
【问题描述】:
我想完成以下任务:
#define FOO(bar, ...) \
static_assert(bar == "foo" || bar == "bazz", "Invalid value for bar") \
...
换句话说,我想在编译时检查给宏的值是否是允许的值之一。在与可变长度的字符串进行比较时,进行编译时字符串比较的最简洁方法是什么?
【问题讨论】:
-
我想说最简洁的方法是“不要使用宏”...使用 C++17,您可以使用很多编译时工具。
-
@MaxLanghof 你有模板草图吗?
-
另外,既然你问“最干净的方法是什么”:你有脏的吗?
-
您可能对this post 及其答案感兴趣。我认为这是一个骗局。 (我通过谷歌搜索发现——提示,提示。)
-
为什么不用
enum代替字符串?