模板函數我有一個模板函數:傳遞按引用`爲const char *`專業化
template<typename T>
void foo(T const & t);
而且該函數的一些特例:
template<> void foo<int>(int const & t) {
cout << t << endl;
}
template<> void foo<const char *>(const char * const & t) {
cout << t << endl;
}
而且某些方面,我想調用該功能:
foo(3);
foo("Hello, world.");
但我無法弄清楚如何制定模板,以便模板類型de管道獲得文字int
和const char *
正確。如果我這樣做,那麼我得到undefined reference to void foo<char [14]>(char const [14] &)
。我試圖重鑄模板是這樣的:
template<typename T>
void foo(T t);
template<> void foo<int>(int t) { ... }
template<> void foo<const char *>(const char * t) { ... }
它的工作原理,但當然,現在我得到呼叫值語義,要求我用的模板參數有一個拷貝構造函數的任何類類型。
有沒有辦法編寫通過引用模板功能與const char *
專業化的作品?
[FYI]字符串文字的類型爲「const char [n]'而不是'const char *'。 – NathanOliver
任何理由更喜歡'template <> void foo(int const&t)'over'template <> void foo (int t)'?我寧願通過值原始類型傳遞 –
Danh