仅当模板参数为真时才能声明变量吗?

问题描述

如果模板参数是class,有没有办法只声明一个变量(在struct/true内),以便下面的代码...

template<bool count_lines>
struct Printer
{
public:
    void print(const std::string& text)
    {
        if constexpr(count_lines)
        {
            std::cout << ++m_line << ':';
        }
        std::cout << text << '\n';
    }

private:
    if constexpr(count_lines) // DOESN'T WORK -- if-constexpr can only be used inside functions
    {
        unsigned int m_line;
    }
};

//Example usage:

int main(/**/)
{
    Printer<false> printer{};
    Printer<true> line_printer{};
    printer.print("Hello");
    line_printer.print("Hello");
    printer.print("World");
    line_printer.print("World");
}

...会产生以下输出吗?

Hello
1:Hello
World
2:World

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...