PR libstdc++/48101 improve errors for invalid container specializations
PR libstdc++/48101 * include/bits/allocator.h (allocator<const _Tp>) (allocator<volatile _Tp>, allocator<const volatile _Tp>): Add partial specializations. * include/bits/forward_list.h (forward_list): Add static assertions. * include/bits/hashtable.h (__cache_default): Use __is_nothrow_invocable instead of __is_noexcept_hash. (_Hashtable): Add static assertions. * include/bits/hashtable_policy.h (__is_noexcept_hash): Remove. * include/bits/stl_deque.h (deque): Add static assertions. * include/bits/stl_function.h (_Identity<const _Tp>): Add partial specialization. * include/bits/stl_list.h (list): Add static assertions. * include/bits/stl_map.h (map): Likewise. * include/bits/stl_multimap.h (multimap): Likewise. * include/bits/stl_multiset.h (multiset): Likewise. * include/bits/stl_set.h (set): Likewise. * include/bits/stl_tree.h (_Rb_tree): Likewise. * include/bits/stl_vector.h (vector): Likewise. * include/bits/unordered_map.h (unordered_map, unordered_multimap): Use typename instead of class in template-parameter-list and remove spaces. * include/bits/unordered_set.h (unordered_set, unordered_multiset): Likewise. * testsuite/23_containers/deque/48101-2_neg.cc: New test. * testsuite/23_containers/deque/48101_neg.cc: New test. * testsuite/23_containers/forward_list/48101-2_neg.cc: New test. * testsuite/23_containers/forward_list/48101_neg.cc: New test. * testsuite/23_containers/list/48101-2_neg.cc: New test. * testsuite/23_containers/list/48101_neg.cc: New test. * testsuite/23_containers/map/48101-2_neg.cc: New test. * testsuite/23_containers/map/48101_neg.cc: New test. * testsuite/23_containers/map/operations/31440.cc: Fix comparison object to have const-qualified call operator. * testsuite/23_containers/multimap/48101-2_neg.cc: New test. * testsuite/23_containers/multimap/48101_neg.cc: New test. * testsuite/23_containers/multiset/48101-2_neg.cc: New test. * testsuite/23_containers/multiset/48101_neg.cc: New test. * testsuite/23_containers/set/48101-2_neg.cc: New test. * testsuite/23_containers/set/48101_neg.cc: New test. * testsuite/23_containers/unordered_map/48101-2_neg.cc: New test. * testsuite/23_containers/unordered_map/48101_neg.cc: New test. * testsuite/23_containers/unordered_multimap/48101-2_neg.cc: New test. * testsuite/23_containers/unordered_multimap/48101_neg.cc: New test. * testsuite/23_containers/unordered_multiset/48101-2_neg.cc: New test. * testsuite/23_containers/unordered_multiset/48101_neg.cc: New test. * testsuite/23_containers/unordered_set/48101-2_neg.cc: New test. * testsuite/23_containers/unordered_set/48101_neg.cc: New test. * testsuite/23_containers/unordered_set/instantiation_neg.cc: Adjust dg-error line number. * testsuite/23_containers/vector/48101-2_neg.cc: New test. * testsuite/23_containers/vector/48101_neg.cc: New test. From-SVN: r255035
This commit is contained in:
parent
6a33d0ff21
commit
866e4d3853
@ -1,3 +1,58 @@
|
||||
2017-11-21 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
PR libstdc++/48101
|
||||
* include/bits/allocator.h (allocator<const _Tp>)
|
||||
(allocator<volatile _Tp>, allocator<const volatile _Tp>): Add partial
|
||||
specializations.
|
||||
* include/bits/forward_list.h (forward_list): Add static assertions.
|
||||
* include/bits/hashtable.h (__cache_default): Use
|
||||
__is_nothrow_invocable instead of __is_noexcept_hash.
|
||||
(_Hashtable): Add static assertions.
|
||||
* include/bits/hashtable_policy.h (__is_noexcept_hash): Remove.
|
||||
* include/bits/stl_deque.h (deque): Add static assertions.
|
||||
* include/bits/stl_function.h (_Identity<const _Tp>): Add partial
|
||||
specialization.
|
||||
* include/bits/stl_list.h (list): Add static assertions.
|
||||
* include/bits/stl_map.h (map): Likewise.
|
||||
* include/bits/stl_multimap.h (multimap): Likewise.
|
||||
* include/bits/stl_multiset.h (multiset): Likewise.
|
||||
* include/bits/stl_set.h (set): Likewise.
|
||||
* include/bits/stl_tree.h (_Rb_tree): Likewise.
|
||||
* include/bits/stl_vector.h (vector): Likewise.
|
||||
* include/bits/unordered_map.h (unordered_map, unordered_multimap):
|
||||
Use typename instead of class in template-parameter-list and remove
|
||||
spaces.
|
||||
* include/bits/unordered_set.h (unordered_set, unordered_multiset):
|
||||
Likewise.
|
||||
* testsuite/23_containers/deque/48101-2_neg.cc: New test.
|
||||
* testsuite/23_containers/deque/48101_neg.cc: New test.
|
||||
* testsuite/23_containers/forward_list/48101-2_neg.cc: New test.
|
||||
* testsuite/23_containers/forward_list/48101_neg.cc: New test.
|
||||
* testsuite/23_containers/list/48101-2_neg.cc: New test.
|
||||
* testsuite/23_containers/list/48101_neg.cc: New test.
|
||||
* testsuite/23_containers/map/48101-2_neg.cc: New test.
|
||||
* testsuite/23_containers/map/48101_neg.cc: New test.
|
||||
* testsuite/23_containers/map/operations/31440.cc: Fix comparison
|
||||
object to have const-qualified call operator.
|
||||
* testsuite/23_containers/multimap/48101-2_neg.cc: New test.
|
||||
* testsuite/23_containers/multimap/48101_neg.cc: New test.
|
||||
* testsuite/23_containers/multiset/48101-2_neg.cc: New test.
|
||||
* testsuite/23_containers/multiset/48101_neg.cc: New test.
|
||||
* testsuite/23_containers/set/48101-2_neg.cc: New test.
|
||||
* testsuite/23_containers/set/48101_neg.cc: New test.
|
||||
* testsuite/23_containers/unordered_map/48101-2_neg.cc: New test.
|
||||
* testsuite/23_containers/unordered_map/48101_neg.cc: New test.
|
||||
* testsuite/23_containers/unordered_multimap/48101-2_neg.cc: New test.
|
||||
* testsuite/23_containers/unordered_multimap/48101_neg.cc: New test.
|
||||
* testsuite/23_containers/unordered_multiset/48101-2_neg.cc: New test.
|
||||
* testsuite/23_containers/unordered_multiset/48101_neg.cc: New test.
|
||||
* testsuite/23_containers/unordered_set/48101-2_neg.cc: New test.
|
||||
* testsuite/23_containers/unordered_set/48101_neg.cc: New test.
|
||||
* testsuite/23_containers/unordered_set/instantiation_neg.cc: Adjust
|
||||
dg-error line number.
|
||||
* testsuite/23_containers/vector/48101-2_neg.cc: New test.
|
||||
* testsuite/23_containers/vector/48101_neg.cc: New test.
|
||||
|
||||
2017-11-21 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com>
|
||||
|
||||
* doc/xml/manual/using.xml (manual.intro.using.macros): Move
|
||||
|
@ -105,7 +105,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
* @tparam _Tp Type of allocated object.
|
||||
*/
|
||||
template<typename _Tp>
|
||||
class allocator: public __allocator_base<_Tp>
|
||||
class allocator : public __allocator_base<_Tp>
|
||||
{
|
||||
public:
|
||||
typedef size_t size_type;
|
||||
@ -165,6 +165,32 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
_GLIBCXX_USE_NOEXCEPT
|
||||
{ return false; }
|
||||
|
||||
// Invalid allocator<cv T> partial specializations.
|
||||
// allocator_traits::rebind_alloc can be used to form a valid allocator type.
|
||||
template<typename _Tp>
|
||||
class allocator<const _Tp>
|
||||
{
|
||||
public:
|
||||
typedef _Tp value_type;
|
||||
template<typename _Up> allocator(const allocator<_Up>&) { }
|
||||
};
|
||||
|
||||
template<typename _Tp>
|
||||
class allocator<volatile _Tp>
|
||||
{
|
||||
public:
|
||||
typedef _Tp value_type;
|
||||
template<typename _Up> allocator(const allocator<_Up>&) { }
|
||||
};
|
||||
|
||||
template<typename _Tp>
|
||||
class allocator<const volatile _Tp>
|
||||
{
|
||||
public:
|
||||
typedef _Tp value_type;
|
||||
template<typename _Up> allocator(const allocator<_Up>&) { }
|
||||
};
|
||||
|
||||
/// @} group allocator
|
||||
|
||||
// Inhibit implicit instantiations for required instantiations,
|
||||
|
@ -406,9 +406,16 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||
* specialized algorithms %unique to linked lists, such as
|
||||
* splicing, sorting, and in-place reversal.
|
||||
*/
|
||||
template<typename _Tp, typename _Alloc = allocator<_Tp> >
|
||||
template<typename _Tp, typename _Alloc = allocator<_Tp>>
|
||||
class forward_list : private _Fwd_list_base<_Tp, _Alloc>
|
||||
{
|
||||
static_assert(is_same<typename remove_cv<_Tp>::type, _Tp>::value,
|
||||
"std::forward_list must have a non-const, non-volatile value_type");
|
||||
#ifdef __STRICT_ANSI__
|
||||
static_assert(is_same<typename _Alloc::value_type, _Tp>::value,
|
||||
"std::forward_list must have the same value_type as its allocator");
|
||||
#endif
|
||||
|
||||
private:
|
||||
typedef _Fwd_list_base<_Tp, _Alloc> _Base;
|
||||
typedef _Fwd_list_node<_Tp> _Node;
|
||||
|
@ -46,7 +46,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
= __not_<__and_<// Do not cache for fast hasher.
|
||||
__is_fast_hash<_Hash>,
|
||||
// Mandatory to have erase not throwing.
|
||||
__detail::__is_noexcept_hash<_Tp, _Hash>>>;
|
||||
__is_nothrow_invocable<const _Hash&, const _Tp&>>>;
|
||||
|
||||
/**
|
||||
* Primary class template _Hashtable.
|
||||
@ -186,6 +186,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
__detail::_Hash_node<_Value,
|
||||
_Traits::__hash_cached::value>>>
|
||||
{
|
||||
static_assert(is_same<typename remove_cv<_Value>::type, _Value>::value,
|
||||
"unordered container must have a non-const, non-volatile value_type");
|
||||
#ifdef __STRICT_ANSI__
|
||||
static_assert(is_same<typename _Alloc::value_type, _Value>{},
|
||||
"unordered container must have the same value_type as its allocator");
|
||||
#endif
|
||||
static_assert(__is_invocable<const _H1&, const _Key&>{},
|
||||
"hash function must be invocable with an argument of key type");
|
||||
static_assert(__is_invocable<const _Equal&, const _Key&, const _Key&>{},
|
||||
"key equality predicate must be invocable with two arguments of "
|
||||
"key type");
|
||||
|
||||
using __traits_type = _Traits;
|
||||
using __hash_cached = typename __traits_type::__hash_cached;
|
||||
using __node_type = __detail::_Hash_node<_Value, __hash_cached::value>;
|
||||
|
@ -79,12 +79,6 @@ namespace __detail
|
||||
return __distance_fw(__first, __last, _Tag());
|
||||
}
|
||||
|
||||
// Helper type used to detect whether the hash functor is noexcept.
|
||||
template <typename _Key, typename _Hash>
|
||||
struct __is_noexcept_hash : std::__bool_constant<
|
||||
noexcept(declval<const _Hash&>()(declval<const _Key&>()))>
|
||||
{ };
|
||||
|
||||
struct _Identity
|
||||
{
|
||||
template<typename _Tp>
|
||||
|
@ -840,6 +840,15 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||
__glibcxx_class_requires2(_Tp, _Alloc_value_type, _SameTypeConcept)
|
||||
#endif
|
||||
|
||||
#if __cplusplus >= 201103L
|
||||
static_assert(is_same<typename remove_cv<_Tp>::type, _Tp>::value,
|
||||
"std::deque must have a non-const, non-volatile value_type");
|
||||
# ifdef __STRICT_ANSI__
|
||||
static_assert(is_same<typename _Alloc::value_type, _Tp>::value,
|
||||
"std::deque must have the same value_type as its allocator");
|
||||
# endif
|
||||
#endif
|
||||
|
||||
typedef _Deque_base<_Tp, _Alloc> _Base;
|
||||
typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
|
||||
typedef typename _Base::_Alloc_traits _Alloc_traits;
|
||||
|
@ -867,7 +867,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
|
||||
template<typename _Tp>
|
||||
struct _Identity
|
||||
: public unary_function<_Tp,_Tp>
|
||||
: public unary_function<_Tp, _Tp>
|
||||
{
|
||||
_Tp&
|
||||
operator()(_Tp& __x) const
|
||||
@ -878,6 +878,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
{ return __x; }
|
||||
};
|
||||
|
||||
// Partial specialization, avoids confusing errors in e.g. std::set<const T>.
|
||||
template<typename _Tp> struct _Identity<const _Tp> : _Identity<_Tp> { };
|
||||
|
||||
template<typename _Pair>
|
||||
struct _Select1st
|
||||
: public unary_function<_Pair, typename _Pair::first_type>
|
||||
|
@ -571,6 +571,15 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
|
||||
__glibcxx_class_requires2(_Tp, _Alloc_value_type, _SameTypeConcept)
|
||||
#endif
|
||||
|
||||
#if __cplusplus >= 201103L
|
||||
static_assert(is_same<typename remove_cv<_Tp>::type, _Tp>::value,
|
||||
"std::list must have a non-const, non-volatile value_type");
|
||||
# ifdef __STRICT_ANSI__
|
||||
static_assert(is_same<typename _Alloc::value_type, _Tp>::value,
|
||||
"std::list must have the same value_type as its allocator");
|
||||
# endif
|
||||
#endif
|
||||
|
||||
typedef _List_base<_Tp, _Alloc> _Base;
|
||||
typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
|
||||
typedef typename _Base::_Tp_alloc_traits _Tp_alloc_traits;
|
||||
|
@ -118,6 +118,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||
__glibcxx_class_requires2(value_type, _Alloc_value_type, _SameTypeConcept)
|
||||
#endif
|
||||
|
||||
#if __cplusplus >= 201103L && defined(__STRICT_ANSI__)
|
||||
static_assert(is_same<typename _Alloc::value_type, value_type>::value,
|
||||
"std::map must have the same value_type as its allocator");
|
||||
#endif
|
||||
|
||||
public:
|
||||
class value_compare
|
||||
: public std::binary_function<value_type, value_type, bool>
|
||||
|
@ -117,6 +117,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||
__glibcxx_class_requires2(value_type, _Alloc_value_type, _SameTypeConcept)
|
||||
#endif
|
||||
|
||||
#if __cplusplus >= 201103L && defined(__STRICT_ANSI__)
|
||||
static_assert(is_same<typename _Alloc::value_type, value_type>::value,
|
||||
"std::multimap must have the same value_type as its allocator");
|
||||
#endif
|
||||
|
||||
public:
|
||||
class value_compare
|
||||
: public std::binary_function<value_type, value_type, bool>
|
||||
|
@ -106,6 +106,15 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||
__glibcxx_class_requires2(_Key, _Alloc_value_type, _SameTypeConcept)
|
||||
#endif
|
||||
|
||||
#if __cplusplus >= 201103L
|
||||
static_assert(is_same<typename remove_cv<_Key>::type, _Key>::value,
|
||||
"std::multiset must have a non-const, non-volatile value_type");
|
||||
# ifdef __STRICT_ANSI__
|
||||
static_assert(is_same<typename _Alloc::value_type, _Key>::value,
|
||||
"std::multiset must have the same value_type as its allocator");
|
||||
# endif
|
||||
#endif
|
||||
|
||||
public:
|
||||
// typedefs:
|
||||
typedef _Key key_type;
|
||||
|
@ -104,6 +104,15 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||
__glibcxx_class_requires2(_Key, _Alloc_value_type, _SameTypeConcept)
|
||||
#endif
|
||||
|
||||
#if __cplusplus >= 201103L
|
||||
static_assert(is_same<typename remove_cv<_Key>::type, _Key>::value,
|
||||
"std::set must have a non-const, non-volatile value_type");
|
||||
# ifdef __STRICT_ANSI__
|
||||
static_assert(is_same<typename _Alloc::value_type, _Key>::value,
|
||||
"std::set must have the same value_type as its allocator");
|
||||
# endif
|
||||
#endif
|
||||
|
||||
public:
|
||||
// typedefs:
|
||||
//@{
|
||||
|
@ -448,6 +448,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
|
||||
typedef __gnu_cxx::__alloc_traits<_Node_allocator> _Alloc_traits;
|
||||
|
||||
#if __cplusplus >= 201103L
|
||||
static_assert(__is_invocable<const _Compare&, const _Key&, const _Key&>{},
|
||||
"comparison object must be invocable with two arguments of key type");
|
||||
#endif
|
||||
|
||||
protected:
|
||||
typedef _Rb_tree_node_base* _Base_ptr;
|
||||
typedef const _Rb_tree_node_base* _Const_Base_ptr;
|
||||
|
@ -347,6 +347,15 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||
__glibcxx_class_requires2(_Tp, _Alloc_value_type, _SameTypeConcept)
|
||||
#endif
|
||||
|
||||
#if __cplusplus >= 201103L
|
||||
static_assert(is_same<typename remove_cv<_Tp>::type, _Tp>::value,
|
||||
"std::vector must have a non-const, non-volatile value_type");
|
||||
# ifdef __STRICT_ANSI__
|
||||
static_assert(is_same<typename _Alloc::value_type, _Tp>::value,
|
||||
"std::vector must have the same value_type as its allocator");
|
||||
# endif
|
||||
#endif
|
||||
|
||||
typedef _Vector_base<_Tp, _Alloc> _Base;
|
||||
typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
|
||||
typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits;
|
||||
|
@ -95,10 +95,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||
* Base is _Hashtable, dispatched at compile time via template
|
||||
* alias __umap_hashtable.
|
||||
*/
|
||||
template<class _Key, class _Tp,
|
||||
class _Hash = hash<_Key>,
|
||||
class _Pred = std::equal_to<_Key>,
|
||||
class _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
|
||||
template<typename _Key, typename _Tp,
|
||||
typename _Hash = hash<_Key>,
|
||||
typename _Pred = equal_to<_Key>,
|
||||
typename _Alloc = allocator<std::pair<const _Key, _Tp>>>
|
||||
class unordered_map
|
||||
{
|
||||
typedef __umap_hashtable<_Key, _Tp, _Hash, _Pred, _Alloc> _Hashtable;
|
||||
@ -1229,10 +1229,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||
* Base is _Hashtable, dispatched at compile time via template
|
||||
* alias __ummap_hashtable.
|
||||
*/
|
||||
template<class _Key, class _Tp,
|
||||
class _Hash = hash<_Key>,
|
||||
class _Pred = std::equal_to<_Key>,
|
||||
class _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
|
||||
template<typename _Key, typename _Tp,
|
||||
typename _Hash = hash<_Key>,
|
||||
typename _Pred = equal_to<_Key>,
|
||||
typename _Alloc = allocator<std::pair<const _Key, _Tp>>>
|
||||
class unordered_multimap
|
||||
{
|
||||
typedef __ummap_hashtable<_Key, _Tp, _Hash, _Pred, _Alloc> _Hashtable;
|
||||
|
@ -90,10 +90,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||
* Base is _Hashtable, dispatched at compile time via template
|
||||
* alias __uset_hashtable.
|
||||
*/
|
||||
template<class _Value,
|
||||
class _Hash = hash<_Value>,
|
||||
class _Pred = std::equal_to<_Value>,
|
||||
class _Alloc = std::allocator<_Value> >
|
||||
template<typename _Value,
|
||||
typename _Hash = hash<_Value>,
|
||||
typename _Pred = equal_to<_Value>,
|
||||
typename _Alloc = allocator<_Value>>
|
||||
class unordered_set
|
||||
{
|
||||
typedef __uset_hashtable<_Value, _Hash, _Pred, _Alloc> _Hashtable;
|
||||
@ -888,10 +888,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||
* Base is _Hashtable, dispatched at compile time via template
|
||||
* alias __umset_hashtable.
|
||||
*/
|
||||
template<class _Value,
|
||||
class _Hash = hash<_Value>,
|
||||
class _Pred = std::equal_to<_Value>,
|
||||
class _Alloc = std::allocator<_Value> >
|
||||
template<typename _Value,
|
||||
typename _Hash = hash<_Value>,
|
||||
typename _Pred = equal_to<_Value>,
|
||||
typename _Alloc = allocator<_Value>>
|
||||
class unordered_multiset
|
||||
{
|
||||
typedef __umset_hashtable<_Value, _Hash, _Pred, _Alloc> _Hashtable;
|
||||
|
29
libstdc++-v3/testsuite/23_containers/deque/48101-2_neg.cc
Normal file
29
libstdc++-v3/testsuite/23_containers/deque/48101-2_neg.cc
Normal file
@ -0,0 +1,29 @@
|
||||
// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do compile }
|
||||
// { dg-options "-std=c++11" }
|
||||
|
||||
#include <deque>
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
std::deque<int, std::allocator<long>> c;
|
||||
}
|
||||
|
||||
// { dg-error "same value_type as its allocator" "" { target *-*-* } 0 }
|
29
libstdc++-v3/testsuite/23_containers/deque/48101_neg.cc
Normal file
29
libstdc++-v3/testsuite/23_containers/deque/48101_neg.cc
Normal file
@ -0,0 +1,29 @@
|
||||
// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
#include <deque>
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
std::deque<const int> c;
|
||||
}
|
||||
|
||||
// { dg-error "non-const, non-volatile value_type" "" { target *-*-* } 0 }
|
||||
// { dg-prune-output "std::allocator<.* has no member named " }
|
@ -0,0 +1,29 @@
|
||||
// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do compile }
|
||||
// { dg-options "-std=c++11" }
|
||||
|
||||
#include <forward_list>
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
std::forward_list<int, std::allocator<long>> c;
|
||||
}
|
||||
|
||||
// { dg-error "same value_type as its allocator" "" { target *-*-* } 0 }
|
@ -0,0 +1,29 @@
|
||||
// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
#include <forward_list>
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
std::forward_list<const int> c;
|
||||
}
|
||||
|
||||
// { dg-error "non-const, non-volatile value_type" "" { target *-*-* } 0 }
|
||||
// { dg-prune-output "std::allocator<.* has no member named " }
|
29
libstdc++-v3/testsuite/23_containers/list/48101-2_neg.cc
Normal file
29
libstdc++-v3/testsuite/23_containers/list/48101-2_neg.cc
Normal file
@ -0,0 +1,29 @@
|
||||
// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do compile }
|
||||
// { dg-options "-std=c++11" }
|
||||
|
||||
#include <list>
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
std::list<int, std::allocator<long>> c;
|
||||
}
|
||||
|
||||
// { dg-error "same value_type as its allocator" "" { target *-*-* } 0 }
|
29
libstdc++-v3/testsuite/23_containers/list/48101_neg.cc
Normal file
29
libstdc++-v3/testsuite/23_containers/list/48101_neg.cc
Normal file
@ -0,0 +1,29 @@
|
||||
// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
#include <list>
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
std::list<const int> c;
|
||||
}
|
||||
|
||||
// { dg-error "non-const, non-volatile value_type" "" { target *-*-* } 0 }
|
||||
// { dg-prune-output "std::allocator<.* has no member named " }
|
29
libstdc++-v3/testsuite/23_containers/map/48101-2_neg.cc
Normal file
29
libstdc++-v3/testsuite/23_containers/map/48101-2_neg.cc
Normal file
@ -0,0 +1,29 @@
|
||||
// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do compile }
|
||||
// { dg-options "-std=c++11" }
|
||||
|
||||
#include <map>
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
std::map<int, int, std::less<int>, std::allocator<int>> c;
|
||||
}
|
||||
|
||||
// { dg-error "same value_type as its allocator" "" { target *-*-* } 0 }
|
30
libstdc++-v3/testsuite/23_containers/map/48101_neg.cc
Normal file
30
libstdc++-v3/testsuite/23_containers/map/48101_neg.cc
Normal file
@ -0,0 +1,30 @@
|
||||
// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do compile }
|
||||
// { dg-options "-std=c++11" }
|
||||
|
||||
#include <map>
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
std::map<int, int, std::less<int*>> c; // { dg-error "here" }
|
||||
std::map<int, int, std::allocator<int>> c2; // { dg-error "here" }
|
||||
}
|
||||
|
||||
// { dg-error "comparison object must be invocable" "" { target *-*-* } 0 }
|
@ -38,7 +38,7 @@ private:
|
||||
|
||||
struct MemoTable::dagNodeLt
|
||||
{
|
||||
bool operator()(const DagNode*, const DagNode*);
|
||||
bool operator()(const DagNode*, const DagNode*) const;
|
||||
};
|
||||
|
||||
class MemoTable::MemoMap
|
||||
|
29
libstdc++-v3/testsuite/23_containers/multimap/48101-2_neg.cc
Normal file
29
libstdc++-v3/testsuite/23_containers/multimap/48101-2_neg.cc
Normal file
@ -0,0 +1,29 @@
|
||||
// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do compile }
|
||||
// { dg-options "-std=c++11" }
|
||||
|
||||
#include <map>
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
std::multimap<int, int, std::less<int>, std::allocator<int>> c;
|
||||
}
|
||||
|
||||
// { dg-error "same value_type as its allocator" "" { target *-*-* } 0 }
|
30
libstdc++-v3/testsuite/23_containers/multimap/48101_neg.cc
Normal file
30
libstdc++-v3/testsuite/23_containers/multimap/48101_neg.cc
Normal file
@ -0,0 +1,30 @@
|
||||
// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do compile }
|
||||
// { dg-options "-std=c++11" }
|
||||
|
||||
#include <map>
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
std::multimap<int, int, std::less<int*>> c; // { dg-error "here" }
|
||||
std::multimap<int, int, std::allocator<int>> c2; // { dg-error "here" }
|
||||
}
|
||||
|
||||
// { dg-error "comparison object must be invocable" "" { target *-*-* } 0 }
|
29
libstdc++-v3/testsuite/23_containers/multiset/48101-2_neg.cc
Normal file
29
libstdc++-v3/testsuite/23_containers/multiset/48101-2_neg.cc
Normal file
@ -0,0 +1,29 @@
|
||||
// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do compile }
|
||||
// { dg-options "-std=c++11" }
|
||||
|
||||
#include <set>
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
std::multiset<int, std::less<int>, std::allocator<long>> c;
|
||||
}
|
||||
|
||||
// { dg-error "same value_type as its allocator" "" { target *-*-* } 0 }
|
31
libstdc++-v3/testsuite/23_containers/multiset/48101_neg.cc
Normal file
31
libstdc++-v3/testsuite/23_containers/multiset/48101_neg.cc
Normal file
@ -0,0 +1,31 @@
|
||||
// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
#include <set>
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
std::multiset<const int> c; // { dg-error "here" }
|
||||
std::multiset<int, std::less<long*>> c2; // { dg-error "here" }
|
||||
}
|
||||
|
||||
// { dg-error "non-const, non-volatile value_type" "" { target *-*-* } 0 }
|
||||
// { dg-error "comparison object must be invocable" "" { target *-*-* } 0 }
|
||||
// { dg-prune-output "std::allocator<.* has no member named " }
|
29
libstdc++-v3/testsuite/23_containers/set/48101-2_neg.cc
Normal file
29
libstdc++-v3/testsuite/23_containers/set/48101-2_neg.cc
Normal file
@ -0,0 +1,29 @@
|
||||
// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do compile }
|
||||
// { dg-options "-std=c++11" }
|
||||
|
||||
#include <set>
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
std::set<int, std::less<int>, std::allocator<long>> c;
|
||||
}
|
||||
|
||||
// { dg-error "same value_type as its allocator" "" { target *-*-* } 0 }
|
31
libstdc++-v3/testsuite/23_containers/set/48101_neg.cc
Normal file
31
libstdc++-v3/testsuite/23_containers/set/48101_neg.cc
Normal file
@ -0,0 +1,31 @@
|
||||
// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
#include <set>
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
std::set<const int> c; // { dg-error "here" }
|
||||
std::set<int, std::less<long*>> c2; // { dg-error "here" }
|
||||
}
|
||||
|
||||
// { dg-error "non-const, non-volatile value_type" "" { target *-*-* } 0 }
|
||||
// { dg-error "comparison object must be invocable" "" { target *-*-* } 0 }
|
||||
// { dg-prune-output "std::allocator<.* has no member named " }
|
@ -0,0 +1,30 @@
|
||||
// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do compile }
|
||||
// { dg-options "-std=c++11" }
|
||||
|
||||
#include <unordered_map>
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
using namespace std;
|
||||
unordered_map<int, int, hash<int>, equal_to<int>, allocator<long>> c;
|
||||
}
|
||||
|
||||
// { dg-error "same value_type as its allocator" "" { target *-*-* } 0 }
|
@ -0,0 +1,31 @@
|
||||
// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
#include <unordered_map>
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
using namespace std;
|
||||
unordered_map<int, int, equal_to<int>, hash<int>> c2; // { dg-error "here" }
|
||||
}
|
||||
|
||||
// { dg-error "hash function must be invocable" "" { target *-*-* } 0 }
|
||||
// { dg-error "key equality predicate must be invocable" "" { target *-*-* } 0 }
|
||||
// { dg-prune-output "use of deleted function" }
|
@ -0,0 +1,30 @@
|
||||
// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do compile }
|
||||
// { dg-options "-std=c++11" }
|
||||
|
||||
#include <unordered_map>
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
using namespace std;
|
||||
unordered_multimap<int, int, hash<int>, equal_to<int>, allocator<long>> c;
|
||||
}
|
||||
|
||||
// { dg-error "same value_type as its allocator" "" { target *-*-* } 0 }
|
@ -0,0 +1,31 @@
|
||||
// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
#include <unordered_map>
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
using namespace std;
|
||||
unordered_multimap<int, int, equal_to<int>, hash<int>> c2; // { dg-error "here" }
|
||||
}
|
||||
|
||||
// { dg-error "hash function must be invocable" "" { target *-*-* } 0 }
|
||||
// { dg-error "key equality predicate must be invocable" "" { target *-*-* } 0 }
|
||||
// { dg-prune-output "use of deleted function" }
|
@ -0,0 +1,30 @@
|
||||
// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do compile }
|
||||
// { dg-options "-std=c++11" }
|
||||
|
||||
#include <unordered_set>
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
using namespace std;
|
||||
unordered_multiset<int, hash<int>, equal_to<int>, allocator<long>> c;
|
||||
}
|
||||
|
||||
// { dg-error "same value_type as its allocator" "" { target *-*-* } 0 }
|
@ -0,0 +1,33 @@
|
||||
// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
#include <unordered_set>
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
using namespace std;
|
||||
unordered_multiset<const int, hash<int>> c; // { dg-error "here" }
|
||||
unordered_multiset<int, equal_to<int>, hash<int>> c2; // { dg-error "here" }
|
||||
}
|
||||
|
||||
// { dg-error "non-const, non-volatile value_type" "" { target *-*-* } 0 }
|
||||
// { dg-error "hash function must be invocable" "" { target *-*-* } 0 }
|
||||
// { dg-error "key equality predicate must be invocable" "" { target *-*-* } 0 }
|
||||
// { dg-prune-output "use of deleted function" }
|
@ -0,0 +1,30 @@
|
||||
// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do compile }
|
||||
// { dg-options "-std=c++11" }
|
||||
|
||||
#include <unordered_set>
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
using namespace std;
|
||||
unordered_set<int, hash<int>, equal_to<int>, allocator<long>> c;
|
||||
}
|
||||
|
||||
// { dg-error "same value_type as its allocator" "" { target *-*-* } 0 }
|
@ -0,0 +1,33 @@
|
||||
// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
#include <unordered_set>
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
using namespace std;
|
||||
unordered_set<const int, hash<int>> c; // { dg-error "here" }
|
||||
unordered_set<int, equal_to<int>, hash<int>> c2; // { dg-error "here" }
|
||||
}
|
||||
|
||||
// { dg-error "non-const, non-volatile value_type" "" { target *-*-* } 0 }
|
||||
// { dg-error "hash function must be invocable" "" { target *-*-* } 0 }
|
||||
// { dg-error "key equality predicate must be invocable" "" { target *-*-* } 0 }
|
||||
// { dg-prune-output "use of deleted function" }
|
@ -18,7 +18,7 @@
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-error "with noexcept" "" { target *-*-* } 268 }
|
||||
// { dg-error "qualify your functors .* with noexcept" "" { target *-*-* } 0 }
|
||||
|
||||
#include <unordered_set>
|
||||
|
||||
|
29
libstdc++-v3/testsuite/23_containers/vector/48101-2_neg.cc
Normal file
29
libstdc++-v3/testsuite/23_containers/vector/48101-2_neg.cc
Normal file
@ -0,0 +1,29 @@
|
||||
// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do compile }
|
||||
// { dg-options "-std=c++11" }
|
||||
|
||||
#include <vector>
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
std::vector<int, std::allocator<long>> c;
|
||||
}
|
||||
|
||||
// { dg-error "same value_type as its allocator" "" { target *-*-* } 0 }
|
29
libstdc++-v3/testsuite/23_containers/vector/48101_neg.cc
Normal file
29
libstdc++-v3/testsuite/23_containers/vector/48101_neg.cc
Normal file
@ -0,0 +1,29 @@
|
||||
// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 3, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
#include <vector>
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
std::vector<const int> c;
|
||||
}
|
||||
|
||||
// { dg-error "non-const, non-volatile value_type" "" { target *-*-* } 0 }
|
||||
// { dg-prune-output "std::allocator<.* has no member named " }
|
Loading…
Reference in New Issue
Block a user