想象一个像
这样的课程class A
{
public:
template <bool S>
A(X<S> x) : x(x) { }
private:
X<S> x;
}
通过参数推导,A类的构造函数可以推导出S的值。例如:
void f() {
X<true> x;
A a(x);
}
问题是私有成员x对S没有任何了解。有没有办法将S的值“传递”给成员变量?
非常感谢
答案 0 :(得分:1)
静态类型class A
可以依赖于其成员类型中的S
之类的唯一方法是,如果它是模板化的那样:
template<bool S>
class A
{
public:
A(X<S> x) : x(x) { }
private:
X<S> x;
};
虽然f
中的类型需要A<true>
,但在C ++ 17中我们可以像以前一样简洁:
void f() {
X<true> x;
A a(x);
}