gpt4 book ai didi

c++ - Windows 中的 cpp-neltib(和 Boost)默认字符串类型

转载 作者:太空宇宙 更新时间:2023-11-04 14:01:26 25 4
gpt4 key购买 nike

我希望能够在使用 cpp-netlib 构建的服务器中获取包含 utf8 字符的 HTTP 请求 header 值。我知道根据使用的字符串类型,有两种用于请求和响应的包装类 - request_header_narrowrequest_header_wide,但是在浏览代码以了解这实际上是怎样的我决定归结为:

template <class Tag>
struct request_header
: mpl::if_<
is_default_string<Tag>,
request_header_narrow,
typename mpl::if_<
is_default_wstring<Tag>,
request_header_wide,
unsupported_tag<Tag>
>::type
>
{};

namespace boost { namespace network {

template <class Tag, class Enable = void>
struct is_default_string : mpl::false_ {};

template <class Tag>
struct is_default_string<Tag, typename enable_if<typename Tag::is_default_string>::type> : mpl::true_ {};

} // namespace network

} // namespace boost

namespace boost { namespace network {

template <class Tag, class Enable = void>
struct is_default_wstring : mpl::false_ {};

template <class Tag>
struct is_default_wstring<Tag, typename enable_if<typename Tag::is_default_wstring>::type> : mpl::true_ {};

} // namespace network

} // namespace boost

因为我对模板元编程的东西不太了解,所以我不太了解 Boosts mpl::if_ 逻辑以及如果两者都具有 ,默认字符串类型实际上是如何确定的mpl::false_ 作为默认值?任何人都可以清除这个或解释如何使 cpp-netlib 使用 std::wstring 作为默认字符串类型吗?

最佳答案

似乎我找到了至少一个解决方案,不确定它是否是最好的,因此欢迎评论,但似乎至少有一种方法是定义一个新的服务器标签集,然后将这些标签传递给服务器基类:

namespace boost { namespace network { namespace http { namespace tags {

typedef mpl::vector<http, simple, async, pod, default_wstring, server> http_async_wstring_server_tags;

BOOST_NETWORK_DEFINE_TAG(http_async_wstring_server);

} /* tags */

} /* http */

} /* network */

} /* boost */

namespace http = boost::network::http;
...
typedef http::server_base<http::tags::http_async_wstring_server, CHTTPRequestHandler>::type async_server;

关于c++ - Windows 中的 cpp-neltib(和 Boost)默认字符串类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19181101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com