实现std :: error_category,与自定义名称空间一起使用时的名称解析问题

时间:2019-06-12 10:40:36

标签: c++ namespaces

简而言之,问题在于名称解析。

说明: 我正在枚举错误代码,并使用它们来派生/实现index()类,但是将实现包装到2个单独的命名空间中时会出现问题,一个用于枚举,一个用于代码实现。

这不容易解释,所以我制作了一个最低限度的可编译代码,您可以将其复制/粘贴到编辑器中并尝试进行编译。

我在代码上方加上了(NOTE :)注释,这是我进行代码编译时要做的事情,但是我需要单独的命名空间,如下面的代码所示,但是名称解析不起作用,并且我不知道如何解决。

std::error_condition

1 个答案:

答案 0 :(得分:0)

虽然我个人建议您将枚举与类别放在相同的名称空间中,但关键问题是make_error_conditionmake_error_code函数必须与枚举位于相同的名称空间中。 std::error_codestd::error_condition构造函数都执行这两个函数的ADL查找。

inline std::error_condition make_error_condition(enums::Condition ec) noexcept
inline std::error_code make_error_code(enums::Error code) noexcept