根据构造函数字符串文字声明std :: array成员变量的大小

问题描述 投票:0回答:1

我需要一个将编译时字符串文字(const char * const)作为其唯一构造函数参数的类。

我希望有一个std :: array成员变量将单词存储在此字符串文字中(例如,使用空格分隔)。因此,此数组的大小永远不会改变,因为在编译时就知道字符串文字。

如何将此数组作为成员变量,同时使其大小通过传递给构造函数的单词数来指定?

我想这样做,以便调用者不需要在类模板参数中指定单词的数量,但是构造函数(大概是一个constexpr)可以在编译时进行推断。

我不想使用向量,因为在这种情况下是不必要的(存储的单词永远不会改变)。我将如何处理?

谢谢

c++ templates constexpr
1个回答
0
投票

我认为您可能会得到的最接近的东西:


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;
}
© www.soinside.com 2019 - 2024. All rights reserved.