我問自己,爲什麼下面的代碼工作,什麼符extern
實例並不時baz_instance
:使用extern const將結構傳遞給模板。什麼是外部?
struct baz {
int value;
};
extern const baz baz_instance = {3};
template<baz const& b>
int foo(){
return b.value;
}
int main(){
foo<baz_instance>();
return 1;
}
爲什麼擺在首位上面的代碼編譯,爲什麼不把它編譯了,如果extern
符被遺漏了嗎? extern
說明符在這個例子中做了什麼?
從源代碼中可以看出,baz並未在其他源文件中定義。它進一步不會解釋,爲什麼結構實例可以傳遞給外部模板,但不能沒有外部。 – smoes
請參閱我的答案中的編輯 –