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.
ss问题应该是(这也是可变参数)的扩展
// ellipsis here ...........................................VVV
constexpr auto generate(const char (&s0)[L0], const char (& ... ss)[LL]) {
Run Code Online (Sandbox Code Playgroud)