[英]Clang template incomplete type
我有以下代碼可以在 Visual Studio 和 g++ 中正常編譯,但在 Clang 中我收到錯誤“錯誤:'ns::B' 是一種不完整的類型”
啊
#pragma once
namespace ns
{
class B;
class A
{
friend class B;
class Inner
{
public:
int x;
Inner(int x) : x(x) {}
};
public:
template<typename T>
T getB(int i)
{
B b = B(Inner(i));
return T(b);
}
};
}
乙
#pragma once
#include "A.h"
namespace ns
{
class B
{
A::Inner i;
public:
B(A::Inner i) : i(i)
{}
operator int() const
{
return i.x;
}
};
}
主程序
#include "A.h"
#include "B.h"
int main()
{
ns::A a;
return a.getB<int>(5);
}
根據我的理解,代碼應該可以工作,因為當模板被實例化時,B 已經完成。 這樣對嗎? 如果是這樣,有什么辦法可以解決 Clang 中的問題?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.