我正在查看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成员函数之前需要清除堆栈?如果不清理堆栈会怎么做?
答案 0 :(得分:12)
这只是为了抑制编译器关于未使用变量的警告,没什么特别的。
如果这就是你的意思,它不会以任何方式清除堆栈。