为什么下面的代码可以只使用默认编译器生成的构造函数就能运行?
我本来以为它只适用于POD,但下面的结构体可能不是POD,所以肯定还有其他原因。
这个问题是关于Jason的Turner C++周报第49/50期的跟进,他在其中使用了带有
template <typename ... T>
struct C : T ... {
using T::operator()...;
};
// template class guidance feature of C++17
template <typename ... T>
C(T...) -> C<T...>;
int main(){
C c { []{}, [](int){} };
c(3);
}
这个问题是关于Jason的Turner C++周报第49/50期的跟进,他在其中使用了带有
std::forward<T>(t)...
的可变参数构造函数。
C
是一个符合 C++17 规范的聚合体。 - T.C.