我的问题是:
有没有办法确定参数是否是文字字符串?
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.