// 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 _Tp&& declval() noexcept; template struct _is_nothrow_constructible { static const bool value = noexcept(_Tp(declval<_Args>()...)); }; template class basic_string { public: typedef typename _Traits::char_type value_type; typedef _Allocator allocator_type; basic_string() noexcept(_is_nothrow_constructible::value); }; template struct __map_value_compare { public: __map_value_compare() noexcept(_is_nothrow_constructible<_Compare>::value); }; struct less { }; struct map { typedef __map_value_compare __vc; __vc vc_; }; template basic_string::basic_string() noexcept(_is_nothrow_constructible::value) {} template __map_value_compare::__map_value_compare() noexcept(_is_nothrow_constructible<_Compare>::value) {} } // std