【发布时间】:2013-09-20 02:53:58
【问题描述】:
我的问题是:
有没有办法判断参数是否为文字字符串?
template<class T>
bool IsLiteral(T arg)
{
// How to implement?
}
或
template<class T>
struct IsLiteral { enum { value = ??? }; };
这样我们就可以写出如下代码:
char* p = "Hello";
assert(IsLiteral(p)); // fail.
assert(IsLiteral("Hello")); // never fail.
assert(IsLiteral<decltype("Hello")>::value); // never fail.
【问题讨论】:
-
我想当它不满足
const char *&&时,你可以让它失败,但这不仅适用于文字。我不知道你为什么想要这个功能。 -
@Shafik,文字字符串与 C 相关。
-
@xmllmx 文字字符串与 C 相关,但模板不相关。
-
@DyP 我什至没有想过要看起来......我的那些宏很丑......如果我考虑一下user define literals 可能是一个不错的选择,具体取决于用例。
标签: c++ string literals typetraits