3

私はゼロのルールを研究しており、ルールを示す最後のコードについて 2 つの質問があります。

class module {
    public:
        explicit module(std::wstring const& name)
        : handle { ::LoadLibrary(name.c_str()), &::FreeLibrary } {}

        // other module related functions go here

    private:
        using module_handle = std::unique_ptr<void, decltype(&::FreeLibrary)>;

        module_handle handle;
    };
  1. ハンドルを初期化するために括弧の代わりに中括弧を使用するのはなぜですか?
  2. module_handle = std::unique_ptr; を使用するとどうなりますか? この文脈で正確に意味するのは? それをtypedefに置き換えることは可能でしょうか?
4

3 に答える 3

7

ハンドルを初期化するために括弧の代わりに中括弧を使用するのはなぜですか?

C++11で導入された統一的な初期化方法です

module_handle = std::unique_ptr; を使用するとどうなりますか? この文脈で正確に意味するのは? それをtypedefに置き換えることは可能でしょうか?

これはテンプレートのエイリアシングであり、新しいタイプを作成するためのものでもあります。usingの新しく強力な代替品です。typedef

于 2013-11-12T21:53:32.460 に答える