gpt4 book ai didi

c++ - 可变模板类中的(简单)构造函数

转载 作者:太空宇宙 更新时间:2023-11-04 12:13:30 25 4
gpt4 key购买 nike

构造函数和复制构造函数将如何查找这个可变参数模板类?

struct A {};
struct B {};

template < typename Head,
typename... Tail>
struct X : public Head,
public Tail...
{
X(int _i) : i(_i) { }

// add copy constructor

int i;
};

template < typename Head >
struct X<Head> { };

int main(int argc, const char *argv[])
{
X<A, B> x(5);
X<A, B> y(x);

// This must not be leagal!
// X<B, A> z(x);

return 0;
}

最佳答案

template < typename Head,
typename... Tail>
struct X : public Head,
public Tail...
{
X(int _i) : i(_i) { }

// add copy constructor
X(const X& other) : i(other.i) {}

int i;
};

在模板类中,X作为类型意味着 X<Head, Tail...> , 和所有 X具有不同模板参数的是不同的类型,因此 X<A,B> 的复制构造函数不匹配 X<B,A> .

演示:http://ideone.com/V6g35

关于c++ - 可变模板类中的(简单)构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8770127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com