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 回答