123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- //===----------------------------------------------------------------------===//
- //
- // The LLVM Compiler Infrastructure
- //
- // This file is dual licensed under the MIT and the University of Illinois Open
- // Source Licenses. See LICENSE.TXT for details.
- //
- //===----------------------------------------------------------------------===//
- #include "test_macros.h"
- #if TEST_STD_VER < 11
- #error
- #else
- // <iterator>
- // template <class C> auto begin(C& c) -> decltype(c.begin());
- // template <class C> auto begin(const C& c) -> decltype(c.begin());
- // template <class C> auto end(C& c) -> decltype(c.end());
- // template <class C> auto end(const C& c) -> decltype(c.end());
- // template <class E> reverse_iterator<const E*> rbegin(initializer_list<E> il);
- // template <class E> reverse_iterator<const E*> rend(initializer_list<E> il);
- #include <iterator>
- #include <cassert>
- namespace Foo {
- struct FakeContainer {};
- typedef int FakeIter;
- FakeIter begin(const FakeContainer &) { return 1; }
- FakeIter end (const FakeContainer &) { return 2; }
- FakeIter rbegin(const FakeContainer &) { return 3; }
- FakeIter rend (const FakeContainer &) { return 4; }
- FakeIter cbegin(const FakeContainer &) { return 11; }
- FakeIter cend (const FakeContainer &) { return 12; }
- FakeIter crbegin(const FakeContainer &) { return 13; }
- FakeIter crend (const FakeContainer &) { return 14; }
- }
- int main(){
- // Bug #28927 - shouldn't find these via ADL
- (void) std::cbegin (Foo::FakeContainer());
- (void) std::cend (Foo::FakeContainer());
- (void) std::crbegin(Foo::FakeContainer());
- (void) std::crend (Foo::FakeContainer());
- }
- #endif
|