Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C+中是否可以使用模板化文字+;? < >我想为模板类创建一个文字,C++中可以这样吗?_C++_Templates_Literals - Fatal编程技术网

在C+中是否可以使用模板化文字+;? < >我想为模板类创建一个文字,C++中可以这样吗?

在C+中是否可以使用模板化文字+;? < >我想为模板类创建一个文字,C++中可以这样吗?,c++,templates,literals,C++,Templates,Literals,我想这样做: template<typename T> class A { A(T x); }; template<typename T> A<T> operator"" _d(unsigned long long int x_double) { return A<T>(2 * x_double); } A<int> a = 4_d; 模板类别A { A(tx); }; 模板 运算符“”\d(无符号长整型x\u双精

我想这样做:

template<typename T> class A
{
    A(T x);
};

template<typename T>
A<T> operator"" _d(unsigned long long int x_double)
{
    return A<T>(2 * x_double);
}

A<int> a = 4_d;
模板类别A
{
A(tx);
};
模板
运算符“”\d(无符号长整型x\u双精度)
{
返回一个(2*x_双倍);
}
A=4μd;

如果我选择总是返回一个文本,我可以得到一个要编译的文本,例如
a
,但是有没有可能让编译器将类型
T
从被指派者的类型中延迟出来呢?

没有这样的事情;唯一的模板文本用于字符串。但您需要的是通过包装器类型实现的:

struct ConvertToA {
    unsigned long long int init;
    template <typename T>
    operator A<T>() { return {init}; }
};

ConvertToA operator"" _d(unsigned long long int x_double)
{
    return {2 * x_double};
}
struct ConvertToA{
无符号长整型初始化;
模板
运算符A(){return{init};}
};
ConvertToA运算符“”\u d(无符号长整型x\u双精度)
{
返回{2*x_double};
}

编译器应该如何推断
T
应该是什么?也许
autoa=4_d.a()作为替代方案。