在初始化列表中,是否有可能创建仅接受空字符串的构造函数重载?
struct null_ptr_type;
struct str
{
str(null_ptr_type*) {}
str(const char(&)[1]) {}
};
struct config
{
str s;
};
int main()
{
config c1 = {0}; // Works, implicit conversion to a null pointer
config c2 = {str("")}; // Works
config cx = {str("abc")}; // Fails (as desired)
config c3 = {""}; // Fails with no conversion possible
}
有没有办法让
c3
的语法在不接受非空字符串的情况下正常工作?我不明白为什么不行,因为 c1
是可以的。是否有些规则我忽略了,导致这种情况被禁止了呢?
N_()
中,但很多字符串是空字符串,我不想修改每一个。 - Dark Falcon