【发布时间】:2014-11-02 01:03:02
【问题描述】:
我可以在std::function(或其他类似结构)中合法地使用模板参数名称吗?例如。给定代码
std::function<int(int, int)> some_func;
我可以用下面的方式重写吗?
std::function<int(int begin, int end)> some_func;
如果它符合标准,那就太好了,因为类型本身很少包含有关参数用途的信息。
到目前为止,我已经在 Visual Studio 2013 中对其进行了测试,并且可以正常工作。编辑:它也适用于 gcc 4.8.1。
【问题讨论】:
-
你试过了吗?如果有效,那么......那么你可以。
-
@RaydelMiranda:这只会证明他的编译器接受它,而不是标准允许它。
-
§8.3.5/11 [dcl.fct] “可以选择提供标识符作为参数名称;”
int (int, int)是一个函数,因此该子句适用于此。 -
int (*foo)(int begin, int end) = nullptr基本上。 -
@RaydelMiranda:引用问题(我强调):“我可以合法使用[…]”,“[…]如果它符合标准, […]" 这清楚地表明问题在于标准允许什么。
标签: c++ c++11 std-function