我需要一个将编译时字符串文字(const char * const)作为其唯一构造函数参数的类。
我希望有一个std :: array成员变量将单词存储在此字符串文字中(例如,使用空格分隔)。因此,此数组的大小永远不会改变,因为在编译时就知道字符串文字。
如何将此数组作为成员变量,同时使其大小通过传递给构造函数的单词数来指定?
我想这样做,以便调用者不需要在类模板参数中指定单词的数量,但是构造函数(大概是一个constexpr)可以在编译时进行推断。
我不想使用向量,因为在这种情况下是不必要的(存储的单词永远不会改变)。我将如何处理?
谢谢
我认为您可能会得到的最接近的东西:
template <char... c>
class foo
{
private:
std::array<char, sizeof...(c)> m_arr;
public:
foo()
{
std::cout << m_arr.size()<<'\n'; //ok : prints 3
}
};
int main()
{
foo<'c', 'h', 'a'> f;
}