【发布时间】:2011-10-01 23:00:09
【问题描述】:
我刚刚看过 Boris Jabes 的 this really nice talk Rock Hard: C++ Evolving。在关于高阶泛型编程的演讲部分中,他说以下是一个函数示例,该函数在返回类型方面更通用,并导致更少的模板函数重载
template <typename Func>
auto deduce(const Func & f) -> decltype(f())
{..}
然而,这可以使用如下的普通模板语法来实现
template <typename Func>
Func deduce(const Func & f)
{..}
所以我猜这个例子并没有真的展示了decltype 的独特力量。谁能举例说明decltype 的这种更启发用法?
【问题讨论】:
-
没有。第一个例子意味着
deduce<Func>(f)返回Func的结果类型。第二个示例意味着deduce<Func>(f)返回Func。你看出区别了吗? -
啊,抱歉,我错过了
decltype参数中的额外()。我的错。
标签: c++ templates c++11 decltype