可以为a
unexpected
?创建一个类型的对象?这里是一个简单的例子。
std::expected<void, void>
这不编译,至少没有GCC-14。
#include <expected>
[[nodiscard]]
std::expected<void, void> do_logic() {
return std::unexpected<void>();
}
我很惊讶此代码不会编译,因为以下编译:
error: no matching function for call to ‘std::unexpected<void>::unexpected()’
有一种方法可以使其与#include <expected>
[[nodiscard]]
std::expected<void, int> do_logic() {
return std::unexpected<int>(-1);
}
一起使用
一个程序,可以实例化非对象类型的意外定义,数组类型,意外的专业化或CV合格类型是不正确的。
<void, void>
ANANabjignt类型是(可能是CV标记的)类型,它不是函数类型,而不是参考类型,而不是CV void.
。 继承了
std::expected
的要求,因此禁止std::unexpected
。