Skip to content

Commit 5ac676a

Browse files
committed
Fix omission of including <exception> for std::terminate() (PR #88 addendum, thanks @tjenssen)
1 parent ba5f81c commit 5ac676a

1 file changed

Lines changed: 21 additions & 3 deletions

File tree

include/nonstd/span.hpp

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,22 @@
4646
# define span_CONFIG_SELECT_SPAN ( span_HAVE_STD_SPAN ? span_SPAN_STD : span_SPAN_NONSTD )
4747
#endif
4848

49+
#ifndef span_CONFIG_CONTRACT_LEVEL_ON
50+
# define span_CONFIG_CONTRACT_LEVEL_ON 1
51+
#endif
52+
53+
#ifndef span_CONFIG_CONTRACT_VIOLATION_THROWS
54+
# define span_CONFIG_CONTRACT_VIOLATION_THROWS 0
55+
#endif
56+
57+
#ifndef span_CONFIG_CONTRACT_VIOLATION_TERMINATES
58+
# if span_CONFIG_CONTRACT_VIOLATION_THROWS
59+
# define span_CONFIG_CONTRACT_VIOLATION_TERMINATES 0
60+
# else
61+
# define span_CONFIG_CONTRACT_VIOLATION_TERMINATES 1
62+
# endif
63+
#endif
64+
4965
#ifndef span_CONFIG_EXTENT_TYPE
5066
# define span_CONFIG_EXTENT_TYPE std::size_t
5167
#endif
@@ -170,8 +186,8 @@
170186
# define span_CONFIG_CONTRACT_VIOLATION_THROWS_V 0
171187
#endif
172188

173-
#if defined( span_CONFIG_CONTRACT_VIOLATION_THROWS ) && span_CONFIG_CONTRACT_VIOLATION_THROWS && \
174-
defined( span_CONFIG_CONTRACT_VIOLATION_TERMINATES ) && span_CONFIG_CONTRACT_VIOLATION_TERMINATES
189+
#if span_CONFIG_CONTRACT_VIOLATION_THROWS && \
190+
span_CONFIG_CONTRACT_VIOLATION_TERMINATES
175191
# error Please define none or one of span_CONFIG_CONTRACT_VIOLATION_THROWS and span_CONFIG_CONTRACT_VIOLATION_TERMINATES to 1, but not both.
176192
#endif
177193

@@ -494,7 +510,9 @@ span_DISABLE_MSVC_WARNINGS( 26439 26440 26472 26473 26481 26490 )
494510

495511
#if ! span_CONFIG( NO_EXCEPTIONS )
496512
# include <stdexcept>
497-
#elif ! span_CONFIG( CONTRACT_VIOLATION_THROWS_V )
513+
#endif
514+
515+
#if span_CONFIG( CONTRACT_VIOLATION_TERMINATES )
498516
# include <exception>
499517
#endif
500518

0 commit comments

Comments
 (0)