libstdc++: Fix errors from Library Fundamentals TS headers in C++11 [PR 98319]

Currently the <experimental/random>, <experimental/source_location> and
<experimental/utility> headers can be included in C++98 and C++11 modes,
but gives errors. With this change they can be included, but define
nothing.

libstdc++-v3/ChangeLog:

	PR libstdc++/98319
	* include/experimental/random: Only define contents for C++14
	and later.
	* include/experimental/source_location: Likewise.
	* include/experimental/utility: Likewise.
	* testsuite/experimental/feat-lib-fund.cc: Include all LFTS
	headers that are present. Allow test to run for all modes.
This commit is contained in:
Jonathan Wakely 2020-12-16 13:37:17 +00:00
parent 3cee0c6562
commit ab9bd93271
4 changed files with 43 additions and 58 deletions

View file

@ -30,6 +30,7 @@
#ifndef _GLIBCXX_EXPERIMENTAL_RANDOM
#define _GLIBCXX_EXPERIMENTAL_RANDOM 1
#if __cplusplus >= 201402L
#include <random>
#include <experimental/bits/lfts_config.h>
@ -78,4 +79,5 @@ inline namespace fundamentals_v2 {
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
#endif
#endif // C++14
#endif // _GLIBCXX_EXPERIMENTAL_RANDOM

View file

@ -30,6 +30,7 @@
#ifndef _GLIBCXX_EXPERIMENTAL_SRCLOC
#define _GLIBCXX_EXPERIMENTAL_SRCLOC 1
#if __cplusplus >= 201402L
#include <cstdint>
namespace std {
@ -84,4 +85,5 @@ inline namespace fundamentals_v2 {
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
#endif
#endif // C++14
#endif // _GLIBCXX_EXPERIMENTAL_SRCLOC

View file

@ -30,6 +30,7 @@
#ifndef _GLIBCXX_EXPERIMENTAL_UTILITY
#define _GLIBCXX_EXPERIMENTAL_UTILITY 1
#if __cplusplus >= 201402L
#include <utility>
#include <bits/uses_allocator.h>
#include <experimental/bits/lfts_config.h>
@ -47,4 +48,5 @@ inline namespace fundamentals_v2 {
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
#endif
#endif // C++14
#endif // _GLIBCXX_EXPERIMENTAL_UTILITY

View file

@ -1,57 +1,36 @@
// { dg-do preprocess { target c++14 } }
// { dg-do preprocess }
#if !__has_include(<experimental/tuple>)
# error "<experimental/tuple>"
// Include all the LFTS headers. This should work with any -std flag.
#include <experimental/algorithm>
#include <experimental/any>
#include <experimental/array>
#include <experimental/chrono>
#include <experimental/deque>
#include <experimental/forward_list>
#include <experimental/functional>
#if __has_include(<experimental/future>) // not supported as of GCC 11
# include <experimental/future>
#endif
#if !__has_include(<experimental/type_traits>)
# error "<experimental/type_traits>"
#endif
#if !__has_include(<experimental/ratio>)
# error "<experimental/ratio>"
#endif
#if !__has_include(<experimental/chrono>)
# error "<experimental/chrono>"
#endif
#if !__has_include(<experimental/system_error>)
# error "<experimental/system_error>"
#endif
#if !__has_include(<experimental/functional>)
# error "<experimental/functional>"
#endif
#if !__has_include(<experimental/optional>)
# error "<experimental/optional>"
#endif
#if !__has_include(<experimental/any>)
# error "<experimental/any>"
#endif
#if !__has_include(<experimental/string_view>)
# error "<experimental/string_view>"
#endif
//#if !__has_include(<experimental/memory>)
//# error "<experimental/memory>"
//#endif
//#if !__has_include(<experimental/memory_resource>)
//# error "<experimental/memory_resource>"
//#endif
//#if !__has_include(<experimental/future>)
//# error "<experimental/future>"
//#endif
#if !__has_include(<experimental/algorithm>)
# error "<experimental/algorithm>"
#endif
//#if !__has_include(<experimental/net>)
//# error "<experimental/net>"
//#endif
#include <experimental/iterator>
#include <experimental/list>
#include <experimental/map>
#include <experimental/memory>
#include <experimental/memory_resource>
#include <experimental/numeric>
#include <experimental/optional>
#include <experimental/propagate_const>
#include <experimental/random>
#include <experimental/ratio>
#include <experimental/regex>
#include <experimental/set>
#include <experimental/source_location>
#include <experimental/string>
#include <experimental/string_view>
#include <experimental/system_error>
#include <experimental/tuple>
#include <experimental/type_traits>
#include <experimental/unordered_map>
#include <experimental/unordered_set>
#include <experimental/utility>
#include <experimental/vector>