在下面的代码中,我想将“ something”替换为可以将“ f”的类型声明为C中传递的第二个参数(同时将C传递给M的模板),即在此处浮动。
#include<iostream>
using namespace std;
template<class A, class B>
class C{
public :
A a;
B b;
};
template<class D>
class M{
public :
decltype(D::<something>) f; //!!!!!!!!!!!!!!!!
void show(){cout<<f;}
};
int main(){
M<C<int,float>> m;
m.show();
}
模板取模板怎么样?
在下面的行中,您可以声明一个采用模板的模板,并将后者的模板参数类型命名为:
template<
template<typename, typename> class D,
typename A, typename B>
用这种表示法,您说的是D是一个模板参数,它本身又是一个模板,A
并且B
是它所采用的类型。现在,您可以使用名称A
和来引用D的第一个和第二个模板参数B
。
using namespace std;
template<class A, class B>
class C{
public :
A a;
B b;
};
template<template<typename, typename> class T, typename A, typename B>
class M{
public :
B f; //!!!!!!!!!!!!!!!!
void show(){cout<<f;}
};
int main(){
M<C, int, float> m;
m.show();
}
有关更多信息,请查看此答案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句