[英]Deleted constructor and template
考慮以下:
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<> 類型的對象會產生預期的錯誤。
對不起,如果我浪費了你的時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.