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

时间:2013-09-20 13:38:55

标签: 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;
};

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

1 个答案:

答案 0 :(得分:12)

这只是为了抑制编译器关于未使用变量的警告,没什么特别的。

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