有這樣的代碼:參考模板參數功能模板
#include <iostream>
template<const double& f>
void fun5(){
std::cout << f << std::endl;
}
int main()
{
const double dddd = 5.0;
fun5<dddd>();
return 0;
}
編譯過程中編譯器錯誤:
$ g++ klasa.cpp -o klasa
klasa.cpp: In function ‘int main()’:
klasa.cpp:11:10: error: ‘dddd’ cannot appear in a constant-expression
klasa.cpp:11:16: error: no matching function for call to ‘fun5()’
klasa.cpp:11:16: note: candidate is:
klasa.cpp:4:6: note: template<const double& f> void fun5()
爲什麼將「DDDD」作爲模板參數不工作,應該做什麼使其工作?
你不需要使它成爲'extern';正如你所說,它可以有內部聯繫。 – 2012-02-09 21:08:31
@MikeSeymour:從理論上講,是的,但二者gcc和鐺拒絕,如果'extern'省略:( – kennytm 2012-02-09 21:12:43
克++ 6.1接受 '的extern const的雙DDDD = 5.0;' 或只是 '雙DDDD = 5.0;',然而「常量雙DDDD = 5.0;」不被接受(在全局區所有這些定義在功能主要) – scdmb 2012-02-09 21:14:13