13e74d6fdd248e20a280f1dff3da9a6c689c2c4c3Evan Cheng//===----------------------------------------------------------------------===//
2bb061291406b1b9f0c976e9845f69f9faf985606Daniel Dunbar//
3bb061291406b1b9f0c976e9845f69f9faf985606Daniel Dunbar//                     The LLVM Compiler Infrastructure
4bb061291406b1b9f0c976e9845f69f9faf985606Daniel Dunbar//
5bb061291406b1b9f0c976e9845f69f9faf985606Daniel Dunbar// This file is dual licensed under the MIT and the University of Illinois Open
6bb061291406b1b9f0c976e9845f69f9faf985606Daniel Dunbar// Source Licenses. See LICENSE.TXT for details.
7bb061291406b1b9f0c976e9845f69f9faf985606Daniel Dunbar//
8bb061291406b1b9f0c976e9845f69f9faf985606Daniel Dunbar//===----------------------------------------------------------------------===//
9bb061291406b1b9f0c976e9845f69f9faf985606Daniel Dunbar
10bb061291406b1b9f0c976e9845f69f9faf985606Daniel Dunbar// <map>
11bb061291406b1b9f0c976e9845f69f9faf985606Daniel Dunbar
12bb061291406b1b9f0c976e9845f69f9faf985606Daniel Dunbar// Check that std::multimap and its iterators can be instantiated with an incomplete
13bb061291406b1b9f0c976e9845f69f9faf985606Daniel Dunbar// type.
14bb061291406b1b9f0c976e9845f69f9faf985606Daniel Dunbar
15bb061291406b1b9f0c976e9845f69f9faf985606Daniel Dunbar#include <map>
16bb061291406b1b9f0c976e9845f69f9faf985606Daniel Dunbar
17bb061291406b1b9f0c976e9845f69f9faf985606Daniel Dunbarstruct A {
18bb061291406b1b9f0c976e9845f69f9faf985606Daniel Dunbar    typedef std::multimap<A, A> Map;
193e74d6fdd248e20a280f1dff3da9a6c689c2c4c3Evan Cheng    int data;
203e74d6fdd248e20a280f1dff3da9a6c689c2c4c3Evan Cheng    Map m;
21bb061291406b1b9f0c976e9845f69f9faf985606Daniel Dunbar    Map::iterator it;
2236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines    Map::const_iterator cit;
23de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar};
248977d087c693fd581db82bcff134d12da0f48bd3Daniel Dunbar
25255f89faee13dc491cb64fbeae3c763e7e2ea4e6Chandler Carruthinline bool operator==(A const& L, A const& R) { return &L == &R; }
260c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainarinline bool operator<(A const& L, A const& R)  { return L.data < R.data; }
27bb061291406b1b9f0c976e9845f69f9faf985606Daniel Dunbarint main() {
28ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    A a;
29255f89faee13dc491cb64fbeae3c763e7e2ea4e6Chandler Carruth}
30bb061291406b1b9f0c976e9845f69f9faf985606Daniel Dunbar