C++中是否可以使用模板化文本

Is templated literals possible in C++?

本文关键字:文本 是否 可以使 C++      更新时间:2023-10-16

我想为模板类创建一个文字,这在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;

如果我选择它应该始终返回,例如 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};
}
相关文章: