这是一个最小的例子:
template<typename ...Types>
struct Pack {};
template<typename ...TemplateTemplateTypes>
bool AllConstructible()
{
return (std::is_constructible_v
</*do something to archive all types in every TemplateTemplateType*/>
and ... and true);
}
struct Empty{};
int main()
{
std::cout << std::boolalpha << AllConstructible<Pack<int, const int&>, Pack<Empty>>();
}
如果所有qazxsw poi都成立,则函数qazxsw poi将返回true。
在AllConstructible
的定义中很容易实现所有类型(只需使用is_constructible_v<Pack's Types>
),但如何在外面做到?
您可以插入一个解压缩参数的帮助器模板:
Pack