1774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier
2774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier
3774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier//===----------------------------------------------------------------------===//
4774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier//
5774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier//                     The LLVM Compiler Infrastructure
6774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier//
7774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier// This file is dual licensed under the MIT and the University of Illinois Open
8774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier// Source Licenses. See LICENSE.TXT for details.
9774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier//
10774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier//===----------------------------------------------------------------------===//
11774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier
12774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier// <unordered_set>
13774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier
1416e2ba19dfffdcf9bba202eb8a27fd79e3d15303Stephan T. Lavavej// Check that std::unordered_multiset and its iterators can be instantiated with an incomplete
15774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier// type.
16774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier
17774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier#include <unordered_set>
18774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier
19774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiseliertemplate <class Tp>
20774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselierstruct MyHash {
21774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier  MyHash() {}
22774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier  std::size_t operator()(Tp const&) const {return 42;}
23774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier};
24774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier
25774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselierstruct A {
26774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier    typedef std::unordered_multiset<A, MyHash<A> > Map;
27774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier    Map m;
28774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier    Map::iterator it;
29774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier    Map::const_iterator cit;
30774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier    Map::local_iterator lit;
31774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier    Map::const_local_iterator clit;
32774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier};
33774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier
34774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselierinline bool operator==(A const& L, A const& R) { return &L == &R; }
35774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier
36774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselierint main() {
37774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier    A a;
38774c7c5ca8c3d224830bcd9a23c7d9ae52b91bcdEric Fiselier}
39