gpt4 book ai didi

c++ - 我可以在此示例中使用折叠表达式吗

转载 作者:行者123 更新时间:2023-11-30 02:16:41 26 4
gpt4 key购买 nike

我想知道是否可以在下面的示例中使用折叠表达式(以及如何编写)。

#include <iostream>
#include <type_traits>
#include <typeinfo>
#include <sstream>
#include <iomanip>

template<int width>
std::string padFormat()
{
return "";
}

template<int width, typename T>
std::string padFormat(const T& t)
{
std::ostringstream oss;
oss << std::setw(width) << t;
return oss.str();
}

template<int width, typename T, typename ... Types>
std::string padFormat(const T& first, Types ... rest)
{
return (padFormat<width>(first + ... + rest)); //Fold expr here !!!
}

int main()
{
std::cout << padFormat<8>("one", 2, 3.0) << std::endl;
std::cout << padFormat<4>('a', "BBB", 9u, -8) << std::endl;
return 0;
}

到目前为止我已经尝试过了,但我没有弄明白!!

谢谢。

最佳答案

我猜您想对每个参数调用 padFormat然后连接。因此,你必须写

return (padFormat<width>(first) + ... + padFormat<width>(rest));

(需要额外的括号;折叠表达式必须括在括号中才有效。)

Coliru link

关于c++ - 我可以在此示例中使用折叠表达式吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54563789/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com