模板文字可以在C ++中使用吗?

索伦

我想为模板类创建文字,这在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从受让人的类型中推迟类型呢?

火箭1111

不,没有这样的东西。唯一的模板文字是字符串。但是您想要的东西可以通过包装类型来实现:

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};
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章