2017-06-07 87 views
-2

C++模板中的template<typename T, T*>是什麼意思? 而在什麼情況下,我應該使用它?C++模板中模板<typename T,T *>的含義是什麼?

#include <iostream> 
using namespace std; 

template<typename T, T*> 
void test(T a) 
{ 
    cout << "test template\n"; 
} 

int main(int argc, char **argv) 
{ 
    test(10); 
    return 0; 
} 

我從上面的代碼中有一個編譯錯誤。

./test.cpp: In function ‘int main(int, char**)’: 
./test.cpp:12: error: no matching function for call to ‘test(int)’ 

變化test(10);test<int, int*>(10);,仍然不能正常工作。

+2

它被稱爲[*非類型模板參數*](http://en.cppreference.com/w/cpp/language/template_parameters#非type_template_parameter) – NathanOliver

+0

@NathanOliver如何調用模板函數測試? –

回答

2

用法是:

extern int global; 

int main() 
{ 
    test<int, &global>(10); 
} 

Demo

相關問題