可变参数模板的正确语法

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

我正在尝试将一些ASCII字符转换为另一个字符。但是由于缺乏可变参数模板语法,我无法使用。

template<typename T>
void despecialize(const T& original, T& totransform, const int& charnum)
{
    if (static_cast<int>(totransform) == charnum) {
        totransform = original;
    }
}

template<typename T>
void despecialize(const T& original, T& totransform, const int& charnum, const int& charother...)
{
    despecialize(original, totransform, charnum);
    despecialize(original, totransform, charother...); //C3546 there are no parameter packs available to expand
}


std::string removePortugueseSpecialLetter(std::string& data)
{
    std::string transformed;
    for (auto& c : data)
    {
        despecialize('a', c, 176, 131, 132, 133, 134);
        transformed += c;
    }
    return transformed;
}

正确的语法应该是什么?

c++ variadic-templates
1个回答
1
投票

为了拥有可变参数模板,您需要可变参数模板参数。看起来像

© www.soinside.com 2019 - 2024. All rights reserved.