gpt4 book ai didi

c++ - 删除构造函数和模板

转载 作者:行者123 更新时间:2023-11-30 04:44:51 30 4
gpt4 key购买 nike

考虑以下几点:

template<typename T>
class A
{
public:
A(int a)
{}

A() = delete;
};

class B
{
public:
B()
{
A<int> a;
}
};

当然,这段代码无法编译,因为 B 类的构造函数试图默认构造 A 类对象,而我已经明确删除了该构造函数。一切都很好。

但是,如果我将 B 设为类模板

template<typename T>
class A
{
public:
A(int a)
{}

A() = delete;
};

template<typename T>
class B
{
public:
B()
{
A<int> a;
}
};

然后代码确实编译了,看来我现在可以默认构造类 A 的实例了。

这是为什么?我错过了什么?

谢谢。

最佳答案

噢!似乎编译器在尝试从模板实例化类之前看不到错误。

实际上尝试创建类型 B<> 的对象会产生预期的错误。

对不起,如果我浪费了你的时间。

关于c++ - 删除构造函数和模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57541688/

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