【问题标题】:Explain what size_t(*)(const std::pair<int, int>&) means [duplicate]解释 size_t(*)(const std::pair<int, int>&) 是什么意思[重复]
【发布时间】:2017-02-22 16:15:30
【问题描述】:

我读了一些代码,偶然发现了这样的字符串

ConcurrentHashMap<std::pair<int, int>, int, size_t(*)(const std::pair<int, int>&)> pair_table(pair_hash);

您能帮忙解释一下size_t(*)(const std::pair&lt;int, int&gt;&amp;) 构造的含义吗?

【问题讨论】:

  • 看起来像一个函数指针类型...函数接受一对整数并返回一个 size_t。
  • 另见cdecl.org
  • @NathanOliver 虽然非常有用,但遗憾的是不懂 C++ 乱码:( 有命令行工具,但是:linux.die.net/man/1/c++decl
  • @user2079303 是的,幸运的是,您通常可以从中删除 C++。

标签: c++


【解决方案1】:

从内到外阅读:

size_t(*)(const std::pair<int, int>&)

*表示类型为指针,括号表示这是指向函数的指针,函数以const std::pair&lt;int, int&gt;&amp;为参数,返回size_t

【讨论】:

  • 为什么size_t(*)没有像size_t(*name)这样的名字?
【解决方案2】:

它是一个指向函数的指针,该函数返回size_t,并将const std::pair&lt;int, int&gt;&amp; 作为参数。

您经常会在(*) 部分看到变量名,尽管在实例化模板时不会。这就是造成混乱的原因吗?

【讨论】:

    【解决方案3】:

    它是一个函数指针,指向具有size_t返回类型和const std::pair&lt;int, int&gt;&amp;参数的函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-13
      • 1970-01-01
      • 1970-01-01
      • 2017-07-08
      • 2015-08-28
      • 2011-06-05
      • 1970-01-01
      相关资源
      最近更新 更多