【问题标题】:What does { } mean before the arguments in a function call ? key_equal{}(key1, key2);{ } 在函数调用中的参数之前是什么意思? key_equal{}(key1, key2);
【发布时间】:2017-05-27 20:32:45
【问题描述】:

我一直在阅读实现哈希表的 C++ 代码。尽管以下代码的作用非常清楚,但我无法理解空花括号 {} 在那里的作用。我试图在网上查找它,但找不到任何东西,很可能是因为我不知道这个表达式的名称。

我认为这与 std::equal 函数被 typedef 为 key_equal 的事实有关,但正如我所说,我找不到任何相关的东西。

这是作业的一部分,是由我不认识的人编写的,因此了解功能比讨论这样做的必要性更重要,尽管我会对此表示赞赏。

提前致谢!

  using key_equal = std::equal_to<key_type>;

  bool equals(const key_type& key1, const key_type& key2) const {

     return key_equal{}(key1, key2); }

【问题讨论】:

    标签: c++ typedef using


    【解决方案1】:

    key_equal{} 使用braced-init-list 语法实例化类型;然后该类型使用两个参数实现operator(),并调用该运算符。

    【讨论】:

    • 我从来没有意识到它是一个类而不是一个函数,并且正在使用一个空的初始化列表进行初始化。谢谢
    • 这里有更多相关链接:list initialization。它不是std::initializer_list,因为它可以包含不同类型的内容,而是braced-init-list
    猜你喜欢
    • 2010-12-21
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多