命名空间True和False中的函数只是排列顺序不同,但是False会导致报错,用的是VS2019.
#include<iostream>
using std::cout;
using std::endl;
namespace True
{
long double sum_value()
{
return 0;
}
template<typename T>
long double sum_value(T values)
{
return values;
}
template<typename T, typename ...Args>
long double sum_value(T values, Args... args)
{
return values + sum_value(args...);
}
}
namespace False
{
template<typename T, typename ...Args>
long double sum_value(T values, Args... args)
{
return values + sum_value(args...);
}
template<typename T>
long double sum_value(T values)
{
return values;
}
long double sum_value()
{
return 0;
}
}
using namespace False;
int main(int argc, char* argv[])
{
cout << sum_value(1, 2, 3) << endl;
cout << sum_value('A', 123.456, 789, 10);
return 0;
}
错误信息:
1>D:\LearnC++\第十八章\编程练习\3\3.cpp(30,1): error C2780: “long double False::sum_value(T,Args...)”: 应输入 2 个参数,却提供了 0 个
1>D:\LearnC++\第十八章\编程练习\3\3.cpp(29): message : 参见“False::sum_value”的声明