2
A
回答
2
是的,但你需要把它放在一個外部鏈接的變量中(或者C++ 11是否取消了外部鏈接的要求)。 基本上,給出:
template <char const* str>
class A { /* ... */ };
這樣的:
extern char const okay[] = "Okay";
A<okay> ...
作品。注意認爲這是不字符串 它定義獨特的內容,但對象本身:
extern char const okay1[] = "Okay";
extern char const okay2[] = "Okay";
鑑於此,A<okay1>
和A<okay2>
有不同的類型。
1
這裏有一個方法,使字符串的內容確定唯一性
#include <windows.h> //for Sleep()
#include <iostream>
#include <string>
using namespace std;
template<char... str>
struct TemplateString{
static const int n = sizeof...(str);
string get() const {
char cstr[n+1] = {str...}; //doesn't automatically null terminate, hence n+1 instead of just n
cstr[n] = '\0'; //and our little null terminate
return string(cstr);
}
};
int main(){
TemplateString<'O','k','a','y'> okay;
TemplateString<'N','o','t',' ','o','k','a','y'> notokay;
cout << okay.get() << " vs " << notokay.get() << endl;
cout << "Same class: " << (typeid(okay)==typeid(notokay)) << endl;
Sleep(3000); //Windows & Visual Studio, sry
}
相關問題
- 1. 字符串作爲模板參數
- 2. 是否可以將函數模板作爲模板參數傳遞?
- 3. 嘗試將字符串文字作爲模板參數傳遞
- 4. 是否可以使用functor作爲std :: function的模板參數?
- 5. 是否可以將變量/函數返回值作爲模板參數
- 6. 模板參數類型爲字符串
- 7. 是否可以將數字的字符串作爲數字進行比較?
- 8. 模板變量是否可以用作模板參數(類似於類模板)?
- 9. 是否可以將void作爲字符串調用?
- 10. 編譯時文字字符串作爲模板參數
- 11. 是否可以完善轉發模板模板參數
- 12. 模板參數本身是否可以模板化?
- 13. 是否可以訪問C++模板模板常量參數?
- 14. 是否可以將字符串數組轉換爲一個字符串?
- 15. 是否可以將字符串轉換爲List數據類型?
- 16. 是否可以將wParam參數轉換爲實際的消息字符串?
- 17. 是否可以將字符串列表轉換爲變量列表的參數?
- 18. web.py - 是否可以將參數從模板傳遞給腳本?
- 19. 檢查參數是否爲字符串
- 20. 是否可以使用實時模板作爲文件模板?
- 21. 是否可以爲模板參數定義一個別名?
- 22. 模板參數的默認參數是否可以專用?
- 23. 以參數作爲字符串
- 24. 需要有空字符串作爲模板參數
- 25. 在C++中傳遞字符串作爲模板參數
- 26. 將說明符覆蓋爲模板參數 - 是否有效?
- 27. 是否可以將字符串拆分爲字典?
- 28. 是否可以將圖像作爲字符串存儲在可可中?
- 29. 模板類可選擇將初始值作爲模板參數
- 30. 金字塔 - 是否可以呈現我的mako模板作爲我的視圖中的字符串可調用?
是的,但由於它不表現爲你會想到它是不是非常有幫助的(它使用指針平等,不串平等)。 –
那麼......你可能會做一個可變模板,將一堆字符作爲模板輸入。至少它會給你真正的字符串等價。 'std :: string'將不起作用,因爲模板參數必須是[整數](http://home.roadrunner.com/~hinnant/TypeHiearchy.pdf)類型。 – Suedocode
[字符串作爲模板參數?]可能重複(http://stackoverflow.com/questions/1826464/strings-as-template-arguments)。另請參見[非類型模板參數](http://stackoverflow.com/questions/5687540/non-type-template-parameters) –