gpt4 book ai didi

C++ 使用命名空间中的符号

转载 作者:行者123 更新时间:2023-11-28 02:54:07 28 4
gpt4 key购买 nike

我正在学习如何 websocketpp仅 header 库有效,我对 lib::error_code 感到非常困惑洒在各处的类型。 Xcode 只会向我显示该类型的声明在 <system_error> 中。标题,这有点令人困惑,因为我看到了 lib是一个 websocketpp 命名空间。

然后我最终在 websocketpp/common/system_error.hpp 中找到了这个:

namespace websocketpp {
namespace lib {

#ifdef _WEBSOCKETPP_CPP11_SYSTEM_ERROR_
using std::error_code;

这是一个 using在命名空间内部,这不是我理解的东西。

这是做什么的?这是否只是别名 websocketpp::lib::error_code成为std::error_code

如果是这样,为什么不将其标记为 typedef std::error_code error_code ?这对我来说更有意义。

最佳答案

(此处为 WebSocket++ 库作者)using 允许将模板类别名为 C++98 中的命名空间。 typedef (pre-c++11) 需要完全指定的类型。

lib::error_code 的情况下,这是无关紧要的,因为它不是模板类,而是命名空间 websocketpp::lib 用于别名的一般模式boost::std:: 之间要求它也适用于模板类(例如 lib::shared_ptr)。为了保持一致性,websocketpp::lib 中的所有别名都使用 using 语法,而不是在用于非模板类的 typedef 之间切换使用 模板。

关于C++ 使用命名空间中的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22397894/

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