如何解决在命名空间中找不到 gsl::fail_fast
在 C++ 契约的这个简单使用中,我得到了 error: no type named 'fail_fast' in namespace 'gsl'
。 try 块会抛出 fast_fail
异常还是其他一些异常?
#define GSL_THROW_ON_CONTRACT_VIOLATION
#include <gsl/gsl>
#include <iostream>
int main(void)
{
try {
Expects(false);
}
catch(const gsl::fail_fast &e) {
std::cout << "exception: " << e.what() << '\n';
}
}
解决方法
GSL_THROW_ON_CONTRACT_VIOLATION
和 gsl::fast_fail
从以 release v3.0.0 开头的 Microsoft GSL 中删除。所有违反合同的行为都会导致调用 std::terminate
,除非您在 MSVC 的内核模式下构建它调用 __fastfail
。
头文件 gsl_assert.h 只定义了 gsl::fail_fast 异常并定义了 GSL_THROW_ON_CONTRACT_VIOLATION。所以它现在编译? – 为劳瑞森服务
曾经有一段时间 gsl::fast_fail
仅在定义 GSL_THROW_ON_CONTRACT_VIOLATION
时才被定义,但是这在 #267 中被识别并随后在 #268 中修复。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。