Comments (5)
I suspect you have misunderstood the implementation. The library only throws exceptions if configured to do so for testing (and ONLY for testing according to the design).
When used normally, it "fails fast" (i.e. calls std::terminate()) if a precondition, postcondition or invariant is violated.
from gsl.
My point is actually that I want to be able to specify the behavior in some way. For example I might want to have the behavior of assert and not directly terminate.
from gsl.
Reading the specification of std::assert and std::terminate suggests they are doing the same thing: Provided #ifndef NDEBUG
and the default terminate handler is active, they both call std::abort
The only difference is the diagnostics sent to stderr
.
from gsl.
@tamaskenez Yes, the diagnostics are a big difference. It is also a semantical difference.
Anyway once (if?) we'll have contracts (http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2015/n4415.pdf), I guess that this library will implement that mechanism...
from gsl.
You're right, my homebrew implementation of the fail_fast_assert concept is also more like an NDEBUG-independent assert.
*fail_fast_assert could issue some assert-like diagnostics before calling std::terminate
from gsl.
Related Issues (20)
- Conversion from span<dynamic_extent> to span<N> failes HOT 1
- gsl::narrow and NaN
- compilation errors around string_span HOT 2
- Doxygen documentation HOT 5
- Wrong Expects in gsl::at? HOT 5
- About release 4.0.0 HOT 2
- [cmake] GSL.natvis issues HOT 3
- ❓ Please take the GSL GitHub survey HOT 1
- Question: How to print a gsl::byte? HOT 2
- How to use the smartpointer overloads inside `<span_ext>`? HOT 1
- Purpose of `<span_ext>`
- gsl::not_null at compile time HOT 13
- Provide a "safe" and "simple" way for binary I/O HOT 2
- Type mismatch in span::operator[] HOT 4
- gsl.pc and gsl/gsl_rng.h files not found HOT 2
- CMake Error at CMakeLists.txt:14 (find_package): Could not find a package configuration file provided by "Microsoft.GSL" HOT 2
- Missing `swap` for `gsl::not_null` for move-only types HOT 4
- `GSL_SUPPRESS(y)` expands to `[[gsl::suppress("x")]]` for clang HOT 5
- Can not build with gcc13 because suggestion warning HOT 3
- gsl::not_null and std::variant are not fully compatible
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gsl.