C++ C++;以单勾号作为参数的模板字符

C++ C++;以单勾号作为参数的模板字符,c++,templates,arguments,C++,Templates,Arguments,我把它缩短了。守则: typedef int NAME; template <NAME, typename T> class MyTemplate { public: MyTemplate(T value) { value_type = value; } T value_type; operator T& const () { return value_type; } }; ty

我把它缩短了。守则:

typedef int NAME;

template <NAME, typename T>
class MyTemplate
{
public:

    MyTemplate(T value)
    {
        value_type = value;
    }

    T value_type;

    operator T& const ()
    {
        return value_type;
    }
};
typedef int NAME;
样板
类MyTemplate
{
公众:
MyTemplate(T值)
{
值\类型=值;
}
T值_型;
运算符T&const()
{
返回值类型;
}
};
总的来说:

MyTemplate<'val', int> number1(1);
MyTemplate number1(1);
不久前我偶然发现了这种代码,我只是通过记忆来重建它。让我困惑的是
val
作为第一个模板参数。此外,如果我传递的字符超过4个,编译器会抱怨。
那么,模板中的
名称
的用途是什么?为什么我可以用单个记号传递
字符串
?我也不确定我刚才看到的代码中是否有typedef,但如果没有它,它将无法编译。

'val'
是一个错误。它的类型是
int
(而不是
char
,这是C++中使用的普通字符文本)。其数值由实现定义。它不同于字符串文字。

什么是
“val”
?这不是
char
literal@user0042它是一种多字符文字,是字符文字的一种类型。看#6@FrançoisAndrieux确定这是有效的吗?所以你问的是你没有写的代码,不理解它的目的,不记得你从哪里得到它,也不确定你问的代码是否真的是你展示的代码?@Yunnosch这是我看到的一段代码,是的。我找到问题的答案了吗?不,因为我在谷歌上搜索了很多东西,但不是正确的东西。如果我不知道要搜索什么,很抱歉在这里问你。如果我打扰了你的情绪,也很抱歉。