C++为什么要使用从(std :: string)到(void)类型的隐式转换?

etc*_*mon 5 c++ networking type-conversion

我正在查看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;
};
Run Code Online (Sandbox Code Playgroud)

我似乎无法找到任何解释,描述范围内类型的(无效)转换是如何必要的或它将做什么.为什么在结束BOOST_CONCEPT_USAGE成员函数之前需要清除堆栈?如果不清除堆栈还会怎么做?

Kir*_*rov 12

它只是用于抑制编译器有关未使用变量的警告,没有什么特别之处.

如果这就是你的意思,它不会以任何方式清除堆栈.