我正在查看 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 成员函数之前需要清除堆栈?如果不清除堆栈,它还会做什么?