【发布时间】:2012-08-21 21:22:16
【问题描述】:
我有很多 typedef 为 std::function<void(PARAMS)> 的类,其中 PARAMS 特定于每个类。我需要根据参数的数量和第一个参数的类型进行专门研究。我想为此使用boost::function_traits,但为了使用它,我需要有相关std::function 的原始函数类型。
例如,给定std::function<void(int,int)>,我想检索void(int,int)。
有没有办法以可移植的方式提取本机类型?附带说明一下,我无权访问 C++11 功能。
【问题讨论】:
-
std::function在 C++11 中是新的,你怎么不使用它呢? -
std::function是 TR1 的一部分。我省略了 tr1 命名空间。如此迂腐对任何人都没有好处。 -
那么请告诉我们您无法访问哪些 C++11 功能,也许您已经在 TR1 中拥有它
-
@dauphic:他并没有迂腐,他只是指出了你问题中明显的困惑。您声称没有可用的 C++11,但您想推理 C++11 的东西(如果您使用 tr1,那么您肯定会告诉我们您使用 std::tr1::function,所以这很令人困惑)。此外,大多数人提出问题并说“没有 C++11”的意思是“只有 C++03”
-
@dauphic:
std::function是一个可变参数模板,因此当它移动到std命名空间时,它会升级为可变参数模板(前提是您的编译器支持该功能)。跨度>
标签: c++ function tr1 typetraits