文字列リテラルのみをパラメーターとして受け入れる 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 にプラットフォーム固有の方法はありますか?