Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/microsoft/GSL.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnna Gringauze <annagrin@microsoft.com>2018-03-04 06:12:23 +0300
committerNeil MacIntosh <neilmac@fb.com>2018-03-04 06:12:23 +0300
commitcbd64c9ff6c45cdbf0312a1829d1f76f713403dd (patch)
tree8556af58117add8490f0fe05214c5e063068e84a
parented3693fd2e6d3dcc20acb6be23cfbf2d1cbb8ecd (diff)
fixed noexept warnings (#632)
* fixed noexept warnings - Removed conditional compilation for throwing version of GSL vs fail_fast because we don't want users of the code to see differences in the span interface dependent on error mechanism chosen - Removed noexcept from functions that may fail at runtime - Fixed CppCoreCheck warnings related to missing and incorrect noexcept - do not warn on unnown attributes for GCC and Clang * remove suppress that does not compiler for clang and gcc
-rw-r--r--include/gsl/span43
1 files changed, 18 insertions, 25 deletions
diff --git a/include/gsl/span b/include/gsl/span
index 36c8a8b..e8ccb35 100644
--- a/include/gsl/span
+++ b/include/gsl/span
@@ -49,11 +49,7 @@
#endif // _MSC_VER < 1910
#endif // _MSC_VER
-#ifdef GSL_THROW_ON_CONTRACT_VIOLATION
-#define GSL_NOEXCEPT /*noexcept*/
-#else
#define GSL_NOEXCEPT noexcept
-#endif // GSL_THROW_ON_CONTRACT_VIOLATION
namespace gsl
{
@@ -127,9 +123,7 @@ namespace details
constexpr span_iterator(const Span* span, typename Span::index_type idx) GSL_NOEXCEPT
: span_(span), index_(idx)
- {
- Expects(span == nullptr || (0 <= index_ && index_ <= span_->size()));
- }
+ {}
friend span_iterator<Span, true>;
template<bool B, std::enable_if_t<!B && IsConst>* = nullptr>
@@ -138,74 +132,74 @@ namespace details
{
}
- constexpr reference operator*() const GSL_NOEXCEPT
+ constexpr reference operator*() const
{
Expects(index_ != span_->size());
return *(span_->data() + index_);
}
- constexpr pointer operator->() const GSL_NOEXCEPT
+ constexpr pointer operator->() const
{
Expects(index_ != span_->size());
return span_->data() + index_;
}
- constexpr span_iterator& operator++() GSL_NOEXCEPT
+ constexpr span_iterator& operator++()
{
Expects(0 <= index_ && index_ != span_->size());
++index_;
return *this;
}
- constexpr span_iterator operator++(int) GSL_NOEXCEPT
+ constexpr span_iterator operator++(int)
{
auto ret = *this;
++(*this);
return ret;
}
- constexpr span_iterator& operator--() GSL_NOEXCEPT
+ constexpr span_iterator& operator--()
{
Expects(index_ != 0 && index_ <= span_->size());
--index_;
return *this;
}
- constexpr span_iterator operator--(int) GSL_NOEXCEPT
+ constexpr span_iterator operator--(int)
{
auto ret = *this;
--(*this);
return ret;
}
- constexpr span_iterator operator+(difference_type n) const GSL_NOEXCEPT
+ constexpr span_iterator operator+(difference_type n) const
{
auto ret = *this;
return ret += n;
}
- constexpr span_iterator& operator+=(difference_type n) GSL_NOEXCEPT
+ constexpr span_iterator& operator+=(difference_type n)
{
Expects((index_ + n) >= 0 && (index_ + n) <= span_->size());
index_ += n;
return *this;
}
- constexpr span_iterator operator-(difference_type n) const GSL_NOEXCEPT
+ constexpr span_iterator operator-(difference_type n) const
{
auto ret = *this;
return ret -= n;
}
- constexpr span_iterator& operator-=(difference_type n) GSL_NOEXCEPT { return *this += -n; }
+ constexpr span_iterator& operator-=(difference_type n) { return *this += -n; }
- constexpr difference_type operator-(span_iterator rhs) const GSL_NOEXCEPT
+ constexpr difference_type operator-(span_iterator rhs) const
{
Expects(span_ == rhs.span_);
return index_ - rhs.index_;
}
- constexpr reference operator[](difference_type n) const GSL_NOEXCEPT
+ constexpr reference operator[](difference_type n) const
{
return *(*this + n);
}
@@ -225,7 +219,6 @@ namespace details
constexpr friend bool operator<(span_iterator lhs,
span_iterator rhs) GSL_NOEXCEPT
{
- Expects(lhs.span_ == rhs.span_);
return lhs.index_ < rhs.index_;
}
@@ -255,7 +248,7 @@ namespace details
template <class Span, bool IsConst>
constexpr span_iterator<Span, IsConst>
operator+(typename span_iterator<Span, IsConst>::difference_type n,
- span_iterator<Span, IsConst> rhs) GSL_NOEXCEPT
+ span_iterator<Span, IsConst> rhs)
{
return rhs + n;
}
@@ -263,7 +256,7 @@ namespace details
template <class Span, bool IsConst>
constexpr span_iterator<Span, IsConst>
operator-(typename span_iterator<Span, IsConst>::difference_type n,
- span_iterator<Span, IsConst> rhs) GSL_NOEXCEPT
+ span_iterator<Span, IsConst> rhs)
{
return rhs - n;
}
@@ -511,7 +504,7 @@ private:
template <std::ptrdiff_t CallerExtent>
span<element_type, dynamic_extent> make_subspan(index_type offset,
index_type count,
- subspan_selector<CallerExtent>) const GSL_NOEXCEPT
+ subspan_selector<CallerExtent>) const
{
span<element_type, dynamic_extent> tmp(*this);
return tmp.subspan(offset, count);
@@ -519,7 +512,7 @@ private:
span<element_type, dynamic_extent> make_subspan(index_type offset,
index_type count,
- subspan_selector<dynamic_extent>) const GSL_NOEXCEPT
+ subspan_selector<dynamic_extent>) const
{
Expects(offset >= 0 && size() - offset >= 0);
if (count == dynamic_extent)
@@ -631,7 +624,7 @@ constexpr span<ElementType> make_span(ElementType* firstElem, ElementType* lastE
}
template <class ElementType, std::size_t N>
-constexpr span<ElementType, N> make_span(ElementType (&arr)[N])
+constexpr span<ElementType, N> make_span(ElementType (&arr)[N]) GSL_NOEXCEPT
{
return span<ElementType, N>(arr);
}