Simplify and clean up library literals.
2013-06-07 Ed Smith-Rowland <3dw4rd@verizon.net> Simplify and clean up library literals. * include/std/chrono: Simplify namespace and versioning management. * include/bits/basic_string.h: Ditto. * testsuite/20_util/duration/literals/types.cc: Remove bogus comment. * testsuite/20_util/duration/literals/values.cc: Ditto. * testsuite/21_strings/basic_string/literals/types.cc: Ditto. * testsuite/21_strings/basic_string/literals/values.cc: Ditto. From-SVN: r199861
This commit is contained in:
parent
83ac9249c8
commit
88c4d6b798
@ -1,3 +1,13 @@
|
|||||||
|
2013-06-08 Ed Smith-Rowland <3dw4rd@verizon.net>
|
||||||
|
|
||||||
|
Simplify and clean up library literals.
|
||||||
|
* include/std/chrono: Simplify namespace and versioning management.
|
||||||
|
* include/bits/basic_string.h: Ditto.
|
||||||
|
* testsuite/20_util/duration/literals/types.cc: Remove bogus comment.
|
||||||
|
* testsuite/20_util/duration/literals/values.cc: Ditto.
|
||||||
|
* testsuite/21_strings/basic_string/literals/types.cc: Ditto.
|
||||||
|
* testsuite/21_strings/basic_string/literals/values.cc: Ditto.
|
||||||
|
|
||||||
2013-06-08 Ed Smith-Rowland <3dw4rd@verizon.net>
|
2013-06-08 Ed Smith-Rowland <3dw4rd@verizon.net>
|
||||||
|
|
||||||
Implement N3654 - Quoted Strings Library Proposal
|
Implement N3654 - Quoted Strings Library Proposal
|
||||||
|
@ -3103,46 +3103,39 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||||||
{ };
|
{ };
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_GLIBCXX_END_NAMESPACE_VERSION
|
|
||||||
} // namespace
|
|
||||||
|
|
||||||
#if __cplusplus > 201103L
|
#if __cplusplus > 201103L
|
||||||
|
|
||||||
namespace std _GLIBCXX_VISIBILITY(default)
|
inline namespace literals {
|
||||||
{
|
inline namespace string_literals {
|
||||||
_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|
||||||
|
|
||||||
inline namespace literals {
|
inline basic_string<char>
|
||||||
inline namespace string_literals {
|
operator"" s(const char* __str, size_t __len)
|
||||||
|
{ return basic_string<char>{__str, __len}; }
|
||||||
inline basic_string<char>
|
|
||||||
operator"" s(const char* __str, size_t __len)
|
|
||||||
{ return basic_string<char>{__str, __len}; }
|
|
||||||
|
|
||||||
#ifdef _GLIBCXX_USE_WCHAR_T
|
#ifdef _GLIBCXX_USE_WCHAR_T
|
||||||
inline basic_string<wchar_t>
|
inline basic_string<wchar_t>
|
||||||
operator"" s(const wchar_t* __str, size_t __len)
|
operator"" s(const wchar_t* __str, size_t __len)
|
||||||
{ return basic_string<wchar_t>{__str, __len}; }
|
{ return basic_string<wchar_t>{__str, __len}; }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _GLIBCXX_USE_C99_STDINT_TR1
|
#ifdef _GLIBCXX_USE_C99_STDINT_TR1
|
||||||
inline basic_string<char16_t>
|
inline basic_string<char16_t>
|
||||||
operator"" s(const char16_t* __str, size_t __len)
|
operator"" s(const char16_t* __str, size_t __len)
|
||||||
{ return basic_string<char16_t>{__str, __len}; }
|
{ return basic_string<char16_t>{__str, __len}; }
|
||||||
|
|
||||||
inline basic_string<char32_t>
|
inline basic_string<char32_t>
|
||||||
operator"" s(const char32_t* __str, size_t __len)
|
operator"" s(const char32_t* __str, size_t __len)
|
||||||
{ return basic_string<char32_t>{__str, __len}; }
|
{ return basic_string<char32_t>{__str, __len}; }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
} // inline namespace string_literals
|
} // inline namespace string_literals
|
||||||
} // inline namespace literals
|
} // inline namespace literals
|
||||||
|
|
||||||
|
#endif // __cplusplus > 201103L
|
||||||
|
|
||||||
_GLIBCXX_END_NAMESPACE_VERSION
|
_GLIBCXX_END_NAMESPACE_VERSION
|
||||||
} // namespace std
|
} // namespace std
|
||||||
|
|
||||||
#endif // __cplusplus > 201103L
|
|
||||||
|
|
||||||
#endif // C++11
|
#endif // C++11
|
||||||
|
|
||||||
#endif /* _BASIC_STRING_H */
|
#endif /* _BASIC_STRING_H */
|
||||||
|
@ -713,7 +713,7 @@ _GLIBCXX_END_NAMESPACE_VERSION
|
|||||||
*
|
*
|
||||||
* Time returned represents wall time from the system-wide clock.
|
* Time returned represents wall time from the system-wide clock.
|
||||||
*/
|
*/
|
||||||
struct system_clock
|
struct system_clock
|
||||||
{
|
{
|
||||||
typedef chrono::nanoseconds duration;
|
typedef chrono::nanoseconds duration;
|
||||||
typedef duration::rep rep;
|
typedef duration::rep rep;
|
||||||
@ -775,148 +775,137 @@ _GLIBCXX_END_NAMESPACE_VERSION
|
|||||||
*/
|
*/
|
||||||
using high_resolution_clock = system_clock;
|
using high_resolution_clock = system_clock;
|
||||||
|
|
||||||
} // end inline namespace _V2
|
} // end inline namespace _V2
|
||||||
|
|
||||||
_GLIBCXX_END_NAMESPACE_VERSION
|
_GLIBCXX_END_NAMESPACE_VERSION
|
||||||
} // namespace chrono
|
} // namespace chrono
|
||||||
|
|
||||||
|
#if __cplusplus > 201103L
|
||||||
|
|
||||||
|
inline namespace literals {
|
||||||
|
inline namespace chrono_literals {
|
||||||
|
|
||||||
|
namespace __detail {
|
||||||
|
|
||||||
|
using namespace __parse_int;
|
||||||
|
|
||||||
|
template<unsigned long long _Val, typename _Dur>
|
||||||
|
struct _Select_type
|
||||||
|
: conditional<
|
||||||
|
_Val <= static_cast<unsigned long long>
|
||||||
|
(numeric_limits<typename _Dur::rep>::max()),
|
||||||
|
_Dur, void>
|
||||||
|
{
|
||||||
|
static constexpr typename _Select_type::type
|
||||||
|
value{static_cast<typename _Select_type::type>(_Val)};
|
||||||
|
};
|
||||||
|
|
||||||
|
template<unsigned long long _Val, typename _Dur>
|
||||||
|
constexpr typename _Select_type<_Val, _Dur>::type
|
||||||
|
_Select_type<_Val, _Dur>::value;
|
||||||
|
|
||||||
|
} // __detail
|
||||||
|
|
||||||
|
constexpr chrono::duration<long double, ratio<3600,1>>
|
||||||
|
operator"" h(long double __hours)
|
||||||
|
{ return chrono::duration<long double, ratio<3600,1>>{__hours}; }
|
||||||
|
|
||||||
|
template <char... _Digits>
|
||||||
|
constexpr typename
|
||||||
|
__detail::_Select_type<__select_int::_Select_int<_Digits...>::value,
|
||||||
|
chrono::hours>::type
|
||||||
|
operator"" h()
|
||||||
|
{
|
||||||
|
return __detail::_Select_type<
|
||||||
|
__select_int::_Select_int<_Digits...>::value,
|
||||||
|
chrono::hours>::value;
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr chrono::duration<long double, ratio<60,1>>
|
||||||
|
operator"" min(long double __mins)
|
||||||
|
{ return chrono::duration<long double, ratio<60,1>>{__mins}; }
|
||||||
|
|
||||||
|
template <char... _Digits>
|
||||||
|
constexpr typename
|
||||||
|
__detail::_Select_type<__select_int::_Select_int<_Digits...>::value,
|
||||||
|
chrono::minutes>::type
|
||||||
|
operator"" min()
|
||||||
|
{
|
||||||
|
return __detail::_Select_type<
|
||||||
|
__select_int::_Select_int<_Digits...>::value,
|
||||||
|
chrono::minutes>::value;
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr chrono::duration<long double>
|
||||||
|
operator"" s(long double __secs)
|
||||||
|
{ return chrono::duration<long double>{__secs}; }
|
||||||
|
|
||||||
|
template <char... _Digits>
|
||||||
|
constexpr typename
|
||||||
|
__detail::_Select_type<__select_int::_Select_int<_Digits...>::value,
|
||||||
|
chrono::seconds>::type
|
||||||
|
operator"" s()
|
||||||
|
{
|
||||||
|
return __detail::_Select_type<
|
||||||
|
__select_int::_Select_int<_Digits...>::value,
|
||||||
|
chrono::seconds>::value;
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr chrono::duration<long double, milli>
|
||||||
|
operator"" ms(long double __msecs)
|
||||||
|
{ return chrono::duration<long double, milli>{__msecs}; }
|
||||||
|
|
||||||
|
template <char... _Digits>
|
||||||
|
constexpr typename
|
||||||
|
__detail::_Select_type<__select_int::_Select_int<_Digits...>::value,
|
||||||
|
chrono::milliseconds>::type
|
||||||
|
operator"" ms()
|
||||||
|
{
|
||||||
|
return __detail::_Select_type<
|
||||||
|
__select_int::_Select_int<_Digits...>::value,
|
||||||
|
chrono::milliseconds>::value;
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr chrono::duration<long double, micro>
|
||||||
|
operator"" us(long double __usecs)
|
||||||
|
{ return chrono::duration<long double, micro>{__usecs}; }
|
||||||
|
|
||||||
|
template <char... _Digits>
|
||||||
|
constexpr typename
|
||||||
|
__detail::_Select_type<__select_int::_Select_int<_Digits...>::value,
|
||||||
|
chrono::microseconds>::type
|
||||||
|
operator"" us()
|
||||||
|
{
|
||||||
|
return __detail::_Select_type<
|
||||||
|
__select_int::_Select_int<_Digits...>::value,
|
||||||
|
chrono::microseconds>::value;
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr chrono::duration<long double, nano>
|
||||||
|
operator"" ns(long double __nsecs)
|
||||||
|
{ return chrono::duration<long double, nano>{__nsecs}; }
|
||||||
|
|
||||||
|
template <char... _Digits>
|
||||||
|
constexpr typename
|
||||||
|
__detail::_Select_type<__select_int::_Select_int<_Digits...>::value,
|
||||||
|
chrono::nanoseconds>::type
|
||||||
|
operator"" ns()
|
||||||
|
{
|
||||||
|
return __detail::_Select_type<
|
||||||
|
__select_int::_Select_int<_Digits...>::value,
|
||||||
|
chrono::nanoseconds>::value;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // inline namespace chrono_literals
|
||||||
|
} // inline namespace literals
|
||||||
|
|
||||||
|
#endif // __cplusplus > 201103L
|
||||||
|
|
||||||
// @} group chrono
|
// @} group chrono
|
||||||
} // namespace
|
} // namespace std
|
||||||
|
|
||||||
#endif //_GLIBCXX_USE_C99_STDINT_TR1
|
#endif //_GLIBCXX_USE_C99_STDINT_TR1
|
||||||
|
|
||||||
#endif // C++11
|
#endif // C++11
|
||||||
|
|
||||||
#if __cplusplus > 201103L
|
|
||||||
|
|
||||||
#ifdef _GLIBCXX_USE_C99_STDINT_TR1
|
|
||||||
|
|
||||||
namespace std _GLIBCXX_VISIBILITY(default)
|
|
||||||
{
|
|
||||||
_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|
||||||
|
|
||||||
inline namespace literals {
|
|
||||||
inline namespace chrono_literals {
|
|
||||||
|
|
||||||
namespace __detail {
|
|
||||||
|
|
||||||
using namespace __parse_int;
|
|
||||||
|
|
||||||
template<unsigned long long _Val, typename _Dur>
|
|
||||||
struct _Select_type
|
|
||||||
: conditional<
|
|
||||||
_Val <= static_cast<unsigned long long>
|
|
||||||
(numeric_limits<typename _Dur::rep>::max()),
|
|
||||||
_Dur, void>
|
|
||||||
{
|
|
||||||
static constexpr typename _Select_type::type
|
|
||||||
value{static_cast<typename _Select_type::type>(_Val)};
|
|
||||||
};
|
|
||||||
|
|
||||||
template<unsigned long long _Val, typename _Dur>
|
|
||||||
constexpr typename _Select_type<_Val, _Dur>::type
|
|
||||||
_Select_type<_Val, _Dur>::value;
|
|
||||||
|
|
||||||
} // __detail
|
|
||||||
|
|
||||||
constexpr chrono::duration<long double, ratio<3600,1>>
|
|
||||||
operator"" h(long double __hours)
|
|
||||||
{ return chrono::duration<long double, ratio<3600,1>>{__hours}; }
|
|
||||||
|
|
||||||
template <char... _Digits>
|
|
||||||
constexpr typename
|
|
||||||
__detail::_Select_type<__select_int::_Select_int<_Digits...>::value,
|
|
||||||
chrono::hours>::type
|
|
||||||
operator"" h()
|
|
||||||
{
|
|
||||||
return __detail::_Select_type<
|
|
||||||
__select_int::_Select_int<_Digits...>::value,
|
|
||||||
chrono::hours>::value;
|
|
||||||
}
|
|
||||||
|
|
||||||
constexpr chrono::duration<long double, ratio<60,1>>
|
|
||||||
operator"" min(long double __mins)
|
|
||||||
{ return chrono::duration<long double, ratio<60,1>>{__mins}; }
|
|
||||||
|
|
||||||
template <char... _Digits>
|
|
||||||
constexpr typename
|
|
||||||
__detail::_Select_type<__select_int::_Select_int<_Digits...>::value,
|
|
||||||
chrono::minutes>::type
|
|
||||||
operator"" min()
|
|
||||||
{
|
|
||||||
return __detail::_Select_type<
|
|
||||||
__select_int::_Select_int<_Digits...>::value,
|
|
||||||
chrono::minutes>::value;
|
|
||||||
}
|
|
||||||
|
|
||||||
constexpr chrono::duration<long double>
|
|
||||||
operator"" s(long double __secs)
|
|
||||||
{ return chrono::duration<long double>{__secs}; }
|
|
||||||
|
|
||||||
template <char... _Digits>
|
|
||||||
constexpr typename
|
|
||||||
__detail::_Select_type<__select_int::_Select_int<_Digits...>::value,
|
|
||||||
chrono::seconds>::type
|
|
||||||
operator"" s()
|
|
||||||
{
|
|
||||||
return __detail::_Select_type<
|
|
||||||
__select_int::_Select_int<_Digits...>::value,
|
|
||||||
chrono::seconds>::value;
|
|
||||||
}
|
|
||||||
|
|
||||||
constexpr chrono::duration<long double, milli>
|
|
||||||
operator"" ms(long double __msecs)
|
|
||||||
{ return chrono::duration<long double, milli>{__msecs}; }
|
|
||||||
|
|
||||||
template <char... _Digits>
|
|
||||||
constexpr typename
|
|
||||||
__detail::_Select_type<__select_int::_Select_int<_Digits...>::value,
|
|
||||||
chrono::milliseconds>::type
|
|
||||||
operator"" ms()
|
|
||||||
{
|
|
||||||
return __detail::_Select_type<
|
|
||||||
__select_int::_Select_int<_Digits...>::value,
|
|
||||||
chrono::milliseconds>::value;
|
|
||||||
}
|
|
||||||
|
|
||||||
constexpr chrono::duration<long double, micro>
|
|
||||||
operator"" us(long double __usecs)
|
|
||||||
{ return chrono::duration<long double, micro>{__usecs}; }
|
|
||||||
|
|
||||||
template <char... _Digits>
|
|
||||||
constexpr typename
|
|
||||||
__detail::_Select_type<__select_int::_Select_int<_Digits...>::value,
|
|
||||||
chrono::microseconds>::type
|
|
||||||
operator"" us()
|
|
||||||
{
|
|
||||||
return __detail::_Select_type<
|
|
||||||
__select_int::_Select_int<_Digits...>::value,
|
|
||||||
chrono::microseconds>::value;
|
|
||||||
}
|
|
||||||
|
|
||||||
constexpr chrono::duration<long double, nano>
|
|
||||||
operator"" ns(long double __nsecs)
|
|
||||||
{ return chrono::duration<long double, nano>{__nsecs}; }
|
|
||||||
|
|
||||||
template <char... _Digits>
|
|
||||||
constexpr typename
|
|
||||||
__detail::_Select_type<__select_int::_Select_int<_Digits...>::value,
|
|
||||||
chrono::nanoseconds>::type
|
|
||||||
operator"" ns()
|
|
||||||
{
|
|
||||||
return __detail::_Select_type<
|
|
||||||
__select_int::_Select_int<_Digits...>::value,
|
|
||||||
chrono::nanoseconds>::value;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // inline namespace chrono_literals
|
|
||||||
} // inline namespace literals
|
|
||||||
|
|
||||||
_GLIBCXX_END_NAMESPACE_VERSION
|
|
||||||
} // namespace std
|
|
||||||
|
|
||||||
#endif //_GLIBCXX_USE_C99_STDINT_TR1
|
|
||||||
|
|
||||||
#endif // __cplusplus > 201103L
|
|
||||||
|
|
||||||
#endif //_GLIBCXX_CHRONO
|
#endif //_GLIBCXX_CHRONO
|
||||||
|
@ -18,10 +18,6 @@
|
|||||||
// with this library; see the file COPYING3. If not see
|
// with this library; see the file COPYING3. If not see
|
||||||
// <http://www.gnu.org/licenses/>.
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
// NOTE: This makes use of the fact that we know how moveable
|
|
||||||
// is implemented on string (via swap). If the implementation changed
|
|
||||||
// this test may begin to fail.
|
|
||||||
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
|
||||||
|
@ -18,10 +18,6 @@
|
|||||||
// with this library; see the file COPYING3. If not see
|
// with this library; see the file COPYING3. If not see
|
||||||
// <http://www.gnu.org/licenses/>.
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
// NOTE: This makes use of the fact that we know how moveable
|
|
||||||
// is implemented on string (via swap). If the implementation changed
|
|
||||||
// this test may begin to fail.
|
|
||||||
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <testsuite_hooks.h>
|
#include <testsuite_hooks.h>
|
||||||
|
|
||||||
|
@ -18,10 +18,6 @@
|
|||||||
// with this library; see the file COPYING3. If not see
|
// with this library; see the file COPYING3. If not see
|
||||||
// <http://www.gnu.org/licenses/>.
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
// NOTE: This makes use of the fact that we know how moveable
|
|
||||||
// is implemented on string (via swap). If the implementation changed
|
|
||||||
// this test may begin to fail.
|
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
|
||||||
|
@ -18,10 +18,6 @@
|
|||||||
// with this library; see the file COPYING3. If not see
|
// with this library; see the file COPYING3. If not see
|
||||||
// <http://www.gnu.org/licenses/>.
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
// NOTE: This makes use of the fact that we know how moveable
|
|
||||||
// is implemented on string (via swap). If the implementation changed
|
|
||||||
// this test may begin to fail.
|
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <testsuite_hooks.h>
|
#include <testsuite_hooks.h>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user