#pragma clang system_header namespace std { template struct integral_constant { static constexpr T value = v; typedef T value_type; typedef integral_constant type; constexpr operator value_type() const noexcept { return value; } }; template using bool_constant = integral_constant; using true_type = bool_constant; using false_type = bool_constant; template struct is_error_code_enum : false_type {}; template void swap(T &a, T &b); enum class io_errc { stream = 1, }; template class tuple; template class less; template <> class less { public: template bool operator()(T &&Lhs, U &&Rhs) const { return static_cast(Lhs) < static_cast(Rhs); } template struct X {}; }; template struct hash; template class numeric_limits; struct Outer { struct Inner {}; }; namespace detail { struct X {}; } // namespace detail } // namespace std // Template specializations that are in a system-header file. // The purpose is to test cert-dcl58-cpp (no warnings here). namespace std { template <> void swap(short &, short &){}; template <> struct is_error_code_enum : true_type {}; template <> bool less::operator()(short &&, short &&) const { return false; } template <> struct less::X {}; } // namespace std