5

CPP-NETLIB のソース コードを見ていると、概念を説明するこの構文に出会いました。

template <class R> struct ClientRequest : network::Message<R> {
  BOOST_CONCEPT_USAGE(ClientRequest) {
    std::string tmp;
    R request_(tmp);
    swap(request, request_);  // swappable via ADL

    std::string host_ = host(request);
    boost::uint16_t port_ = port(request);
    std::string path_ = path(request);
    std::string query_ = query(request);
    std::string anchor_ = anchor(request);
    std::string protocol_ = protocol(request);

    request << uri(std::string());

    network::http::uri(request, std::string());

    (void) host_;
    (void) port_;
    (void) path_;
    (void) query_;
    (void) anchor_;
    (void) protocol_;
  }

 private:
  R request;
};

スコープ内の型の(無効な)変換がどのように必要になるか、またはそれが何をするかを説明する説明が見つからないようです。BOOST_CONCEPT_USAGE メンバー関数を終了する前にスタックをクリアする必要があるのはなぜですか? スタックをクリアしない場合、他に何をしますか?

4

1 に答える 1

12

未使用の変数に関するコンパイラの警告を抑制するだけで、特別なことは何もありません。

それがあなたの言いたいことなら、それは決してスタックをクリアしません。

于 2013-09-20T13:40:06.830 に答える