c++ - 我可以在 std::function 模板签名类型参数中使用命名参数吗?

标签 c++ c++11 std-function

我可以合法地在 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。

最佳答案

是的,您可以提供参数名称。来自 C++11 标准的第 8.3.5/11 段:

An identifier can optionally be provided as a parameter name;

指针到函数和指针到成员函数类型也是如此。就个人而言,我只会在标识符更清楚地表达您的代码意图时才使用它。

关于c++ - 我可以在 std::function 模板签名类型参数中使用命名参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25730544/

相关文章:

c++ - 成员和成员函数的歧义部分模板特化

c++ - 使用 Weverything 和 C++11 时出现与 clang 冲突的警告

c++ - std::function 与原始函数指针和 void* this 相比的性能?

c++ - 在 std::map 中使用 std::function

c++ - 如何使用 Visual Studio CppUnitTestFramework 初始化测试变量

c++ - 无论区域设置如何,如何将 float 转换为字符串?

具有 printf 样式字符串的 C++ 异常类?

c++ - 当存储在容器中时,std::function() 到底做了什么?

c++ - 仅在 Linux 操作系统上出现双指针后段错误

c++ - 每个类类型的静态内存池对象