【发布时间】:2015-09-23 04:53:58
【问题描述】:
我想知道我是否写了这样的东西:
Type &var = database.get<TYPE>(name);
假设database 是一个能够存储不同数据类型的数据块的容器。为了获得对该数据块的引用,将 name 作为 std::string 传递给 get() 以便在不同的地方通过该调用我可以访问某些“全局”变量。我有 get() 作为模板方法,我想保持这种方式。
我想做的是用这样一种优雅的方式缩短调用:
Type &var = database.get(name);
所以模板推演是自动进行的。现在我可以为此创建一个宏,但这不是我想要做的,因为我认为它不适合这种情况。
这个推论虽然行不通,因为我们需要一个模板参数。为什么编译器不能获取为变量设置的内容并将其作为模板参数自动传递?有没有办法做到这一点?在这种情况下,我不想进行任何类型转换。可以省略吗?
【问题讨论】:
-
模板推导在编译时完成。编译器在编译时是否知道,存储了哪些数据?
标签: c++ templates type-conversion type-deduction