我得到以下compiler¹消息「在這裏需要實例化」是什麼意思?
main.cpp: In instantiation of ‘void fkt(Foo) [with Foo = int]’:
main.cpp:5:7: required from here
無論如何創建的二進制文件,所以它不是一個錯誤。但它也是 未標記爲警告。這條消息是什麼,爲什麼我得到它?
我的代碼減少到下面的例子
template <typename Foo>
void fkt(Foo f) {}
int main() {
fkt(1);
return 0;
}
¹ GCC 4.7.2
編輯:這裏重現步驟:
% cat main.cpp
template <typename Foo>
void fkt(Foo f) {}
int main() {
fkt(1);
return 0;
}
% g++ -Wall -Wextra main.cpp
main.cpp: In instantiation of ‘void fkt(Foo) [with Foo = int]’:
main.cpp:5:7: required from here
main.cpp:2:6: warning: unused parameter ‘f’ [-Wunused-parameter]
它是錯誤的*部分*。你錯過了一些周圍的消息。 – 2013-03-26 18:43:51
我想你在減少代碼時刪除了錯誤。見[這裏](http://ideone.com/qx5yxF)。請嘗試提供一個重現錯誤的例子。 – juanchopanza 2013-03-26 18:43:57
問題中的代碼是有效的,應該編譯時沒有錯誤/警告。您正在指向的消息是更大的消息的一部分,前面的行包含警告/錯誤,並繼續解釋編譯器如何進入該警告/錯誤 – 2013-03-26 18:46:18