模板成员变量像通用函数一样键入

Template member variable typed like generic function

本文关键字:一样 函数 成员 变量      更新时间:2023-10-16

想象一个类似

的类
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不了解。

非常感谢

静态类型 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);
}