You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

README.md 2.4KB

7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. # Scope Guard
  2. [![Build Status](https://travis-ci.org/offa/scope-guard.svg?branch=master)](https://travis-ci.org/offa/scope-guard)
  3. [![GitHub release](https://img.shields.io/github/release/offa/scope-guard.svg)](https://github.com/offa/scope-guard/releases)
  4. [![License](https://img.shields.io/badge/license-GPLv3-yellow.svg)](LICENSE)
  5. ![C++](https://img.shields.io/badge/c++-14-green.svg)
  6. Implementation of *Scope Guards* (`scope_exit`, `scope_success`, `scope_fail`) and `unique_resource` as proposed in [**P0052R5**][2] (former [N3949][1]).
  7. ## Compatibility
  8. This implementation conforms to [P0052][2], except:
  9. ###### Namespace
  10. The namespace `sr` is used instead of `std`.
  11. ###### Filenames
  12. The filenames contain a `.h` extension. To enable the compatible header as specified in the document the CMake option `ENABLE_COMPAT_HEADER` can be used. This will generate and install an additional header named `scope` (without file extension).
  13. ###### std::uncaught_exceptions()
  14. The function `std::uncaught_exceptions()` is not available in C++14 and is therefore replaced with `std::uncaught_exception()`. This has some limitations, but is the only solution until C++17 is used.
  15. ## Implementation decisions
  16. ###### Factory functions
  17. The Factory functions for both types are kept for the C++14 implementations as *deduction guides* aren't available.
  18. ## Documentation
  19. - [*P0052R5 - Generic Scope Guard and RAII Wrapper for the Standard Library*][2] (P. Sommerlad, A. L. Sandoval, E. Niebler, D. Krügler)
  20. - [*N3949 - Scoped Resource - Generic RAII Wrapper for the Standard Library*][1] (P. Sommerlad, A. L. Sandoval)
  21. ## License
  22. **GNU General Public License (GPL)**
  23. This program is free software: you can redistribute it and/or modify
  24. it under the terms of the GNU General Public License as published by
  25. the Free Software Foundation, either version 3 of the License, or
  26. (at your option) any later version.
  27. This program is distributed in the hope that it will be useful,
  28. but WITHOUT ANY WARRANTY; without even the implied warranty of
  29. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  30. GNU General Public License for more details.
  31. You should have received a copy of the GNU General Public License
  32. along with this program. If not, see <http://www.gnu.org/licenses/>.
  33. [1]: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3949.pdf
  34. [2]: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0052r5.pdf