mirror of git://gcc.gnu.org/git/gcc.git
array (at): Remove constexpr when -fno-exceptions.
2011-07-25 Benjamin Kosnik <bkoz@redhat.com> * include/std/array (at): Remove constexpr when -fno-exceptions. * testsuite/23_containers/array/at_neg.cc: Test. From-SVN: r176780
This commit is contained in:
parent
104fcc7aec
commit
9bc13c238d
|
|
@ -1,3 +1,8 @@
|
||||||
|
2011-07-25 Benjamin Kosnik <bkoz@redhat.com>
|
||||||
|
|
||||||
|
* include/std/array (at): Remove constexpr when -fno-exceptions.
|
||||||
|
* testsuite/23_containers/array/at_neg.cc: Test.
|
||||||
|
|
||||||
2011-07-25 Paolo Carlini <paolo.carlini@oracle.com>
|
2011-07-25 Paolo Carlini <paolo.carlini@oracle.com>
|
||||||
Nathan Ridge <zeratul976@hotmail.com>
|
Nathan Ridge <zeratul976@hotmail.com>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -163,16 +163,21 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||||
return _M_instance[__n];
|
return _M_instance[__n];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __EXCEPTIONS
|
||||||
constexpr const_reference
|
constexpr const_reference
|
||||||
at(size_type __n) const
|
at(size_type __n) const
|
||||||
{
|
{
|
||||||
return __n < _Nm ? _M_instance[__n] :
|
return __n < _Nm ?
|
||||||
#ifdef __EXCEPTIONS
|
_M_instance[__n] : throw out_of_range(__N("array::at"));
|
||||||
throw out_of_range(__N("array::at"));
|
|
||||||
#else
|
|
||||||
_M_instance[0];
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
const_reference
|
||||||
|
at(size_type __n) const
|
||||||
|
{
|
||||||
|
return __n < _Nm ?
|
||||||
|
_M_instance[__n] : __throw_out_of_range(__N("array::at"));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
reference
|
reference
|
||||||
front()
|
front()
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
// { dg-do run { xfail *-*-* } }
|
||||||
|
// { dg-options "-std=gnu++0x -fno-exceptions" }
|
||||||
|
|
||||||
|
// Copyright (C) 2011 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License along
|
||||||
|
// with this library; see the file COPYING3. If not see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#include <array>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
std::array<int, 3> a{{1, 2, 3}};
|
||||||
|
auto i = a.at(4); // expected behavior is to either throw or abort
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue