【发布时间】:2015-05-30 17:08:05
【问题描述】:
我有以下代码sn-p:
template <class T>
int foo(T (*f)()) {
typedef T (*func)();
typedef functor<T, func> F; //this line
// ...
}
如您所见,我使用 typedef 作为函数指针 (func),但我想删除它以简化我的代码。我试过这个:
template <class T>
int foo(T (*f)()) {
typedef functor<T, typename f> F;
// ...
}
但这不会编译。在一行中将完整的 typedef 拼写为 F 的正确方法是什么?
【问题讨论】:
-
嗯?但是
func是函数指针类型,而不是模板。那条线到底是什么意思? -
你需要
decltype(f)。 -
@T.C.,谢谢,效果很好。
标签: c++ templates c++11 typedef typename