我试图通过使用 Lambda 或以某种方式转发参数来摆脱重载函数,但它甚至无法编译。为什么我不能这样做?有哪些选择?
我真的根本不想使用重载功能。我知道我在做什么是错的,但必须有办法吗?
int maximum(int n) //Trying to not have to use this.. I want to get rid of this :l
{
return n;
}
template<typename... Args>
int maximum(int n, Args... args)
{
return std::max(n, [&args...](int n){return n;}); //tried using a lambda instead of maximum(args...);
}
我也试过:
template<typename... Args>
int maximum(int n, Args... args)
{
return std::max(n, std::forward<Args>(args)...);
}
另外,为什么是(不编译):
template<typename... Args>
int maximum(int n, Args... args)
{
return std::max(n, []{return 0;});
}
不同于(编译):
template<typename... Args>
int maximum(int n, Args... args)
{
return std::max(n, 0);
}
第一个不编译,但第二个肯定可以..:S
我使用上述所有内容,例如:std::cout<<maximum(1, 2, 3, 7, 2, 5);