C-Style 字符串可以用作模板参数吗?
我试过了:
template <char *str>
struct X
{
const char *GetString() const
{
return str;
}
};
int main()
{
X<"String"> x;
cout<<x.GetString();
}
虽然我对类定义没有抱怨,但实例化产生 'X' : invalid expression as a template argument for 'str'
(VC)。
原文由 cvb 发布,翻译遵循 CC BY-SA 4.0 许可协议
字符串文字不能用作模板参数。
更新:如今,在提出并回答了这个问题几年后,可以使用字符串文字作为模板参数。使用 C++11,我们可以使用字符包作为模板参数 (
template<char ...c>
),并且 可以 将文字字符串传递给这样的模板。但是,这会起作用: