c++ - 在 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
受让人类型?
解决方案
不,没有这样的事情;唯一的模板文字用于字符串。但是您想要的可以通过包装器类型实现:
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};
}
推荐阅读
- ruby-on-rails - Sidekiq 没有以大于 1 的并发运行
- swift - 自定义 uilabel 并使其国际化的最佳方法
- c# - 使用流进行图像解码的列表视图
- javascript - 摇动以撤消问题 ios Safari
- java - '蜂巢上的火花' - 引起:java.lang.ClassNotFoundException:org.apache.hive.spark.counter.SparkCounters
- r - ggplot 将不同的图形合二为一
- javascript - 在根和任何对象之间的对象树中查找对象
- neo4j - 如何检查节点是否全局存在并在 Cypher 中设置条件?
- storage - 存储 api 不适用于 Microsoft Edge 上的自签名扩展
- sql-server - SQL Server 命名实例 TCPIP 端口设置和端点/基础结构权限错误