我想寫一個C++ 11的功能,將只接受字符串文字作爲參數:只接受字符串文字的C++ 11函數?
void f(const char* s) { static_assert(s is a string literal); ... }
即:
f("foo"); // OK
char c = ...;
f(&c); // ERROR: Doesn't compile
string s = ...;
f(s.c_str()); // ERROR: Doesn't compile
etc
反正是有實現這個?函數的簽名可以隨時更改,也可以使用宏或任何其他語言功能。
如果這是不可能的最接近的近似值是什麼? (用戶定義的文字可以幫助嗎?)
如果不是在GCC 4.7/Linux中有特定平臺的方式嗎?
你將如何處理字符串文字,你無法處理非字符串文字?那麼如何傳遞一個使用字符串文字初始化的'const char * const'變量?或者是一個const char(&array)[]對字符串文字的引用? – hvd
這是不可能的,因爲字符串文字只是'char const [N]'數組,因此與它們無法區分。 – Xeo
也許使用用戶定義的字符串文字,該文字可以轉換爲具有隻讀數據的類型,該數據類型是該右值引用(因此它不能是命名變量)。目標是強制將字符串逐字輸入到調用點的代碼中,並靜態編譯到應用程序映像中。 –