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