2017-05-27 3 views
1

私はハッシュテーブルを実装するC++コードを読んできました。次のコードが何をしているのかわかりませんが、emtpyの中括弧{}が何をしているのか私の頭を掴めませんでした。私はそれをオンラインで見ようとしましたが、何も見つけられませんでした。おそらくこの表現の名前さえも私には分かりません。{}は関数呼び出しの引数の前に何を意味しますか? key_equal {}(key1、key2);

私は、std :: equal関数がkey_equalとしてtypedefされているという事実と関係があると思いますが、私はそれに関連するものは見つけられませんでした。

これは宿題の一部であり、私が知らない人が書いていたので、機能性を理解することはその必要性を論議するよりも重要です。

ありがとうございます!

using key_equal = std::equal_to<key_type>; 

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

    return key_equal{}(key1, key2); } 

答えて

2

key_equal{}braced-init-list構文を使用してタイプをインスタンス化します。型は2つのargsを持つoperator()を実装し、その演算子が呼び出されます。

+0

私はそれが関数ではないクラスであり、空の初期化子リストで初期化されているということはありませんでした。ありがとう –

+1

ここでより啓発のリンクです:[list initialization](http://en.cppreference.com/w/cpp/language/list%20initialization)。 異なるタイプの内容を持つことができるので、 'std :: initializer_list 'ではなく' braced-init-list'です。 – HolyBlackCat

+0

ありがとうございます。私はリンクを修正した。 – gimpf

関連する問題