Define __cpp_lib_endian feature test macro

This macro was added as part of moving std::endian from <type_traits> to
<bit>.

	* include/std/bit (__cpp_lib_endian): Define.
	* include/std/version (__cpp_lib_endian): Define.
	* testsuite/26_numerics/endian/2.cc: New.
	* testsuite/26_numerics/endian/3.cc: New.
	* testsuite/26_numerics/endian/4.cc: New.

From-SVN: r273828
This commit is contained in:
Jonathan Wakely 2019-07-26 14:30:42 +01:00 committed by Jonathan Wakely
parent 3644cadf6a
commit a5378f9b60
6 changed files with 90 additions and 0 deletions

View File

@ -1,3 +1,11 @@
2019-07-26 Jonathan Wakely <jwakely@redhat.com>
* include/std/bit (__cpp_lib_endian): Define.
* include/std/version (__cpp_lib_endian): Define.
* testsuite/26_numerics/endian/2.cc: New.
* testsuite/26_numerics/endian/3.cc: New.
* testsuite/26_numerics/endian/4.cc: New.
2019-07-26 François Dumont <fdumont@gcc.gnu.org>
* testsuite/util/testsuite_iterators.h

View File

@ -315,6 +315,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
log2p1(_Tp __x) noexcept
{ return std::__log2p1(__x); }
#define __cpp_lib_endian 201907L
/// Byte order
enum class endian
{

View File

@ -156,6 +156,7 @@
#if __cpp_impl_destroying_delete
# define __cpp_lib_destroying_delete 201806L
#endif
#define __cpp_lib_endian 201907L
#define __cpp_lib_erase_if 201900L
#define __cpp_lib_interpolate 201902L
#ifdef _GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED

View File

@ -0,0 +1,27 @@
// Copyright (C) 2019 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 even 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/>.
// { dg-options "-std=gnu++2a" }
// { dg-do compile { target c++2a } }
#include <bit>
#ifndef __cpp_lib_endian
# error "Feature-test macro for endian missing in <bit>"
#elif __cpp_lib_endian != 201907L
# error "Feature-test macro for endian has wrong value in <bit>"
#endif

View File

@ -0,0 +1,27 @@
// Copyright (C) 2019 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 even 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/>.
// { dg-options "-std=gnu++2a" }
// { dg-do compile { target c++2a } }
#include <version>
#ifndef __cpp_lib_endian
# error "Feature-test macro for endian missing in <version>"
#elif __cpp_lib_endian != 201907L
# error "Feature-test macro for endian has wrong value in <version>"
#endif

View File

@ -0,0 +1,25 @@
// Copyright (C) 2019 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 even 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/>.
// { dg-do compile { target c++17_down } }
#include <bit>
#include <version>
#ifdef __cpp_lib_endian
# error "Feature-test macro for endian defined before C++20"
#endif