【发布时间】:2016-03-03 12:29:56
【问题描述】:
在C++1y 中,我是否可以有一个绑定到字符串文字但不绑定到char* 或char[]& 或类似的引用类?
class LitRf{
const char* data_;
size_t size_;
public:
LitRf(const char* /*?*/ s) : data_{s},size_{sizeof(s)} { /*?*/ }
};
【问题讨论】:
-
我能想到的最好办法是提供一个 static_asserts 的模板化重载,或者使用显式关键字。
-
@Borgleader 但我认为没有办法区分字符串文字和 const char 数组。
-
@Borgleader 你怎么会
static_assert那东西是字符串文字?explicit怎么能在这里提供帮助?实际上,如果你可以static_assert知道某事是字符串文字,你也可以使用与 SFINAE 相同的条件来控制重载决议,而不是一开始就绑定到函数。 -
@Borgleader 请分享。
-
我知道。你无法改变这一点。始终可以添加常量,但不能删除。您只能添加一个非常量重载,但
=delete它。