【发布时间】:2019-01-21 03:58:27
【问题描述】:
我有一个包含const chars 的static constexpr 数组的类,我想通过c_str() 方法使其可用:
class my_class {
private:
static constexpr const char c_str_[6] = {'c', 'h', 'a', 'r', 's', '\0'};
public:
static constexpr const char* c_str() {
return c_str_;
}
};
这可行,但有一个不幸的效果: 它从类型中删除指向数组的长度:
decltype(my_class::c_str()) // equivalent to const char*
我真正想要的是某种方式来实现这一点:
decltype(my_class::c_str()) // equivalent to const char[6]
我知道无论哪种情况,返回的对象都是一个指针;我只想保留类型中指向数组的长度。有点像decltype("string literal") 是const char[15],而不是const char*。
有没有办法做到这一点?
【问题讨论】: