首页 > 解决方案 > 可变参数数组编译时的已知大小

问题描述

我试图在编译时推断出每个数组的大小,但我不喜欢我想出的方式。

template <std::size_t Length>
struct __helper
{
    __helper(const char (&_sName)[Length])
    {
        memcpy(m_sName, _sName, Length);
    }

    char m_sName[Length];
};

template <std::size_t... Lengths>
static void foo(__helper<Lengths>... _namespaces)
{
}

我只想传递没有__helper的文本,例如foo("test", "test2")而不是foo(__helper("test"), __helper("test2"))。有什么方法可以按我的意愿执行此操作吗?

标签: c++templates

解决方案


采用可变参数 C 数组的语法是:

template <std::size_t... Ns>
static void foo(char (&...args)[Ns])
{
// ...
}

推荐阅读