0
雖然answering a different question,我找不到爲什麼下面的代碼將被禁止的原因。是否允許在模板中使用本地定義的類型?
template <typename F> void bar (F *f) { f->a = 0; }
int main() {
struct Foo { int a; } f = { 3 };
bar(&f); // fail
}
我提供的解釋是,編譯器就沒有辦法合法地表達模板擴張,但更多的是我的直覺比一個原因。有沒有一個明確的解釋,爲什麼代碼不應該編譯?
@DavidRodríguez-dribeas:問題是我在查看C++ 11草案標準,原因是這是不允許的,並且找不到它。但是,我使用的是默認模式下的編譯器,而不是C++ 11模式。當我將C++ 11開關傳遞給編譯器時,代碼會進行編譯。 – jxh