【发布时间】:2018-04-30 01:11:12
【问题描述】:
也许我遗漏了一些明显的东西,但以下编译和运行,我不知道为什么。我知道this,但在下面的示例中,参数包的位置和默认参数是相反的。它不违反默认参数必须出现在最后的规则吗?参数包不能有默认值。
#include <iostream>
#include <string>
#include <tuple>
template<typename ... Ts>
struct Test
{
int i;
std::string str;
Test(int _i = 0, Ts&& ... _ts)
:
i(_i),
str(std::get<0>(std::forward_as_tuple(std::forward<Ts>(_ts)...)))
{}
};
int main()
{
Test<std::string> t(1, "huh??");
std::cout << "t.i = " << t.i << ", t.str = " << t.str << "\n";
return 0;
}
这会产生
t.i = 1, t.str = huh??
【问题讨论】:
-
任何参数包的默认值都不为空吗?
-
是的,默认值为空..
标签: c++ c++11 c++14 default-arguments