使用variadic模板模板参数时,使用sizeof获取参数数量...()GCC和Clang有不同的要求。 GCC要求您填写可变参数的模板参数,而Clang要求您不要这样做。由于他们都声称符合标准,因此必须有错误或标准必须含糊不清(如果它们应在c ++ 1y中更正)。
示例(http://ideone.com/5TWFKY处的完整可编辑示例):
template<template <class> class... T>
struct X
{
/* code goes here */
};
GCC(注意:在这种情况下,Z是任何非模板类):
static const constexpr size_t count = sizeof...(T<Z>);
锵:
static const constexpr size_t count = sizeof...(T);
MSVC 2013(完整性 - 与Clang w / out constexpr相同,不受支持):
static const size_t count = sizeof...(T);
答案 0 :(得分:5)