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 メンバー関数を終了する前にスタックをクリアする必要があるのはなぜですか? スタックをクリアしない場合、他に何をしますか?