Viewing file: error5.C (2.49 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
// PR c++/49181 // { dg-do compile { target c++11 } }
namespace std { typedef __SIZE_TYPE__ size_t;
template<typename _Tp, _Tp> struct integral_constant;
template<typename _Tp, _Tp __v> struct integral_constant { static constexpr _Tp value = __v; typedef _Tp value_type; typedef integral_constant<_Tp, __v> type; constexpr operator value_type() { return value; } };
typedef integral_constant<bool, true> true_type;
typedef integral_constant<bool, false> false_type;
template<typename _Tp, _Tp __v> constexpr _Tp integral_constant<_Tp, __v>::value;
template<bool, typename _Tp = void> struct enable_if { };
template<typename _Tp> struct enable_if<true, _Tp> { typedef _Tp type; };
template<typename _Tp> inline _Tp declval();
struct bad_alloc { }; }
void* operator new(std::size_t) #if __cplusplus <= 201402L throw (std::bad_alloc) // { dg-warning "deprecated" "" { target { ! c++17 } } } #endif ;
namespace std {
template<typename _Tp> class allocator { public: typedef _Tp* pointer; typedef _Tp value_type;
pointer allocate(size_t, const void* = 0); };
template<typename _Alloc> struct allocator_traits { typedef typename _Alloc::value_type value_type;
template<typename _Tp> static typename _Tp::pointer _S_pointer_helper(_Tp*); static value_type* _S_pointer_helper(...); typedef decltype(_S_pointer_helper((_Alloc*)0)) __pointer;
typedef __pointer pointer;
typedef const void* const_void_pointer;
private: template<typename _Alloc2> struct __allocate_helper { template<typename _Alloc3, typename = decltype(std::declval<_Alloc3*>()->allocate( std::declval<size_t>(), std::declval<const_void_pointer>()))> static true_type __test(int);
template<typename> static false_type __test(...);
typedef decltype(__test<_Alloc>(0)) type; static const bool value = type::value; };
template<typename _Alloc2> static typename enable_if<__allocate_helper<_Alloc2>::value, pointer>::type _S_allocate(_Alloc2& __a, size_t __n, const_void_pointer __hint) { return __a.allocate(__n, __hint); }
public: static pointer allocate(_Alloc& __a, size_t __n, const_void_pointer __hint) { return _S_allocate(__a, __n, __hint); } };
}
namespace std { typedef short test_type; template struct allocator_traits<allocator<test_type>>; }
|