C++ 中是否可以使用模板化文字?
Is templated literals possible in C++?
我想为模板创建文字 class,这在 C++ 中可行吗?
我想做这样的事情:
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;
如果我选择它应该总是 return,例如 A<short>
,我可以获得要编译的文字,但是是否有可能以任何方式让编译器推迟类型 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};
}
我想为模板创建文字 class,这在 C++ 中可行吗?
我想做这样的事情:
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;
如果我选择它应该总是 return,例如 A<short>
,我可以获得要编译的文字,但是是否有可能以任何方式让编译器推迟类型 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};
}