| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
- // expected-no-diagnostics
- // PR10087: Make sure that we don't conflate exception specifications
- // from different functions in the canonical type system.
- namespace std
- {
- template <class _Tp> _Tp&& declval() noexcept;
- template <class _Tp, class... _Args>
- struct _is_nothrow_constructible
- {
- static const bool value = noexcept(_Tp(declval<_Args>()...));
- };
- template<class, class _Traits, class _Allocator>
- class basic_string
- {
- public:
- typedef typename _Traits::char_type value_type;
- typedef _Allocator allocator_type;
- basic_string()
- noexcept(_is_nothrow_constructible<allocator_type>::value);
- };
- template <class, class, class _Compare>
- struct __map_value_compare
- {
- public:
- __map_value_compare()
- noexcept(_is_nothrow_constructible<_Compare>::value);
- };
- struct less
- {
- };
- struct map
- {
- typedef __map_value_compare<int, short, less> __vc;
- __vc vc_;
- };
- template<class T, class _Traits, class _Allocator>
- basic_string<T, _Traits, _Allocator>::basic_string() noexcept(_is_nothrow_constructible<allocator_type>::value) {}
- template <class T, class Value, class _Compare>
- __map_value_compare<T, Value, _Compare>::__map_value_compare()
- noexcept(_is_nothrow_constructible<_Compare>::value) {}
- } // std
|