gpt4 book ai didi

c++ - std::errc,如何在 retval 中指示成功

转载 作者:可可西里 更新时间:2023-11-01 18:38:59 25 4
gpt4 key购买 nike

我想写一个这样的 C++ 函数:

#include <system_error>
std::errc f() { return std::errc::success; }

但我无法理解如何使用 std::errc 'enum class' 类型返回成功值(在本例中为 0)。我看到的一种方法是返回 int:

template <typename E>
constexpr typename std::underlying_type<E>::type to_underlying(E e) {
return static_cast<typename std::underlying_type<E>::type>(e);
}

int f() { is_succ() ? 0 : to_underlying(err); }

但对我来说它看起来很丑。从标准 C++ 0x14 中的函数返回面向 C 的成功/错误代码的标准方法在哪里?

附言。我使用的是 MS VC 2015 补丁 2。

最佳答案

你可以这样做:

#include <system_error>

std::errc f() { return std::errc(); }

int main()
{
std::errc x = f();
if (x == std::errc())
{
// success
}
}

std::errc() (0) 是一个有效的枚举值,即使它没有出现在从 1 开始的枚举器列表中。它代表成功。

为了比较,看看std::to_chars , 它返回一个

struct to_chars_result {
char* ptr;
std::errc ec;
}

关于c++ - std::errc,如何在 retval 中指示成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36825284/

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