C++ 带有模板参数的模板类专门化
及C++ 带有模板参数的模板类专门化,c++,templates,template-meta-programming,C++,Templates,Template Meta Programming,及 模板 结构条{ 使用toto=T }; 这可能是有道理的,但我无法正确理解你的ideone代码只是有一大堆印刷错误: template <template<typename , typename ...> class F, typename T, typename ...L> struct bar<F<T,L...>>{ using toto = T }; 结构栏{ //应该是 结构条{ //缺少括号 int main{ //缺少分
模板
结构条{
使用toto=T
};
这可能是有道理的,但我无法正确理解你的ideone代码只是有一大堆印刷错误:
template <template<typename , typename ...> class F, typename T, typename ...L>
struct bar<F<T,L...>>{
using toto = T
};
结构栏{
//应该是
结构条{
//缺少括号
int main{
//缺少分号
使用toto=T
酒吧a;
//应该是
酒吧a;
从语法上讲,您在示例中忘记了很多东西
模板
结构foo{};
模板
结构条{
使用toto=T;//缺少分号
};
模板
结构条{//包扩展错误
使用toto=T;
};
缺少int main(){/()
bara;//将参数传递给foo,因为
//我只是想这么做
}
这里有一些语法问题
bar
是接受一个类型参数的模板。因此bar
的任何部分或显式专门化也必须接受一个类型参数
template <typename T, typename... L>
struct foo{};
template <typename T>
struct bar {
using toto = T; // Semicolon missing
};
template <template<typename, typename...> class F, typename T, typename... L>
struct bar<F<T,L...>> { // Wrong pack expansion
using toto = T;
};
int main() { // () missing
bar< foo<int,char,char> > a; // Pass the parameters to foo since you're
// partially specializing bar to just do that
}
template <template<typename , typename ...> class F,
typename T, typename... L>
struct bar<F<T, L...>> {
main
声明缺少括号:
using toto = T;
^^
intmain(){
酒吧a;
}
最后一个看起来应该是这样的,错误是什么?问题是,bar只需要一个模板参数,但是为了调用最后一个模板,我至少需要3个,因为我一直在调解它,但是它仍然不是Wokimi尝试过的,但是现在我看到了这个问题,它是<>代码> <代码>这是C++的一个常见的解析怪癖。“ILL应该发出正确的选项警告,C++ 11添加了一个解析规则,允许使用<代码> >代码>。谢谢,我已经尝试过了,但是我在代码< >代码> <代码>之前,把代码< >代码>,这就是为什么它不工作它应该工作,不管从C++ 11开始的新C++版本的空间。o日期编译器
template <typename T, typename... L>
struct foo{};
template <typename T>
struct bar {
using toto = T; // Semicolon missing
};
template <template<typename, typename...> class F, typename T, typename... L>
struct bar<F<T,L...>> { // Wrong pack expansion
using toto = T;
};
int main() { // () missing
bar< foo<int,char,char> > a; // Pass the parameters to foo since you're
// partially specializing bar to just do that
}
template <template<typename T, typename ...L> class F>
struct bar<F> {
template <template<typename , typename ...> class F,
typename T, typename... L>
struct bar<F<T, L...>> {
using toto = T;
^^
int main() {
bar<foo<int,char,char>> a;
}