我正在编写一个 TMP 来计算struct
使用可变参数模板作为模板参数传递给 a 的元素数量。这是我的代码:
template<class T, T... t>
struct count;
template<class T, T h, T... t>
struct count<T, h, t...>{
static const int value = 1 + count<T, t...>::value;
};
template<class T>
struct count<T>{
static const int value = 0;
};
template<>
struct count<std::string, std::string h, std::string... l>{
static const int value = 1 + count<std::string, l...>::value;
};
template<>
struct count<std::string>{
static const int value = 0;
};
int main(){
std::cout << count<int, 10,22,33,44,56>::value << '\n';
std::cout << count<bool, true, false>::value << '\n';
std::cout << count<std::string, "some">::value << '\n';
return 0;
}
count
我在with的第三次实例化时收到错误,std::string
因为g++ 4.7
告诉我error: ‘class std::basic_string<char>’ is not a valid type for a template non-type parameter
。有什么解决方法吗?