推导可变参数模板函数中的数组大小

wim*_*aan 5 c++ arrays templates variadic-templates c++20

我尝试编写一个constexpr接受可变数量的 C 字符串的函数。我想推断出传递的数组的所有大小(此处:L0和)。LL看起来我在那里犯了一个愚蠢的错误,但尝试这样做时,我收到一个错误:

error: parameter packs not expanded with '...':
  204 | constexpr auto generate(const char (&s0)[L0], const char (&ss)[LL] ...) {
Run Code Online (Sandbox Code Playgroud)
template<size_t L0, size_t... LL>
constexpr auto generate(const char (&s0)[L0], const char (&ss)[LL] ...) {
    constexpr size_t ll = (LL + ...);
    std::integral_constant<size_t, L0>::_;
    std::integral_constant<size_t, ll>::_;
        
    std::array<char, 1 + L0 + ll> r;
    return r;        
}

constexpr auto STR_X = generate("abc", "def");
Run Code Online (Sandbox Code Playgroud)

这是在gcc12.0 版和-std=c++20.

max*_*x66 4

ss问题应该是(这也是可变参数)的扩展

// ellipsis here ...........................................VVV
constexpr auto generate(const char (&s0)[L0], const char (& ... ss)[LL]) {
Run Code Online (Sandbox Code Playgroud)