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>
|
||||
|
||||
Implement N3654 - Quoted Strings Library Proposal
|
||||
|
@ -3103,46 +3103,39 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
{ };
|
||||
#endif
|
||||
|
||||
_GLIBCXX_END_NAMESPACE_VERSION
|
||||
} // namespace
|
||||
|
||||
#if __cplusplus > 201103L
|
||||
|
||||
namespace std _GLIBCXX_VISIBILITY(default)
|
||||
{
|
||||
_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
inline namespace literals {
|
||||
inline namespace string_literals {
|
||||
|
||||
inline namespace literals {
|
||||
inline namespace string_literals {
|
||||
|
||||
inline basic_string<char>
|
||||
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
|
||||
inline basic_string<wchar_t>
|
||||
operator"" s(const wchar_t* __str, size_t __len)
|
||||
{ return basic_string<wchar_t>{__str, __len}; }
|
||||
inline basic_string<wchar_t>
|
||||
operator"" s(const wchar_t* __str, size_t __len)
|
||||
{ return basic_string<wchar_t>{__str, __len}; }
|
||||
#endif
|
||||
|
||||
#ifdef _GLIBCXX_USE_C99_STDINT_TR1
|
||||
inline basic_string<char16_t>
|
||||
operator"" s(const char16_t* __str, size_t __len)
|
||||
{ return basic_string<char16_t>{__str, __len}; }
|
||||
inline basic_string<char16_t>
|
||||
operator"" s(const char16_t* __str, size_t __len)
|
||||
{ return basic_string<char16_t>{__str, __len}; }
|
||||
|
||||
inline basic_string<char32_t>
|
||||
operator"" s(const char32_t* __str, size_t __len)
|
||||
{ return basic_string<char32_t>{__str, __len}; }
|
||||
inline basic_string<char32_t>
|
||||
operator"" s(const char32_t* __str, size_t __len)
|
||||
{ return basic_string<char32_t>{__str, __len}; }
|
||||
#endif
|
||||
|
||||
} // inline namespace string_literals
|
||||
} // inline namespace literals
|
||||
} // inline namespace string_literals
|
||||
} // inline namespace literals
|
||||
|
||||
#endif // __cplusplus > 201103L
|
||||
|
||||
_GLIBCXX_END_NAMESPACE_VERSION
|
||||
} // namespace std
|
||||
|
||||
#endif // __cplusplus > 201103L
|
||||
|
||||
#endif // C++11
|
||||
|
||||
#endif /* _BASIC_STRING_H */
|
||||
|
@ -713,7 +713,7 @@ _GLIBCXX_END_NAMESPACE_VERSION
|
||||
*
|
||||
* Time returned represents wall time from the system-wide clock.
|
||||
*/
|
||||
struct system_clock
|
||||
struct system_clock
|
||||
{
|
||||
typedef chrono::nanoseconds duration;
|
||||
typedef duration::rep rep;
|
||||
@ -775,148 +775,137 @@ _GLIBCXX_END_NAMESPACE_VERSION
|
||||
*/
|
||||
using high_resolution_clock = system_clock;
|
||||
|
||||
} // end inline namespace _V2
|
||||
} // end inline namespace _V2
|
||||
|
||||
_GLIBCXX_END_NAMESPACE_VERSION
|
||||
} // 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
|
||||
} // namespace
|
||||
} // namespace std
|
||||
|
||||
#endif //_GLIBCXX_USE_C99_STDINT_TR1
|
||||
|
||||
#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
|
||||
|
@ -18,10 +18,6 @@
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <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 <type_traits>
|
||||
|
||||
|
@ -18,10 +18,6 @@
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <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 <testsuite_hooks.h>
|
||||
|
||||
|
@ -18,10 +18,6 @@
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <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 <type_traits>
|
||||
|
||||
|
@ -18,10 +18,6 @@
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <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 <testsuite_hooks.h>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user