brintos

brintos / llvm-project-archived public Read only

0
0
Text · 984 B · 66b445e Raw
44 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++112// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++98 -Wno-c++11-extensions3 4struct S {5  int *begin();6  int *end();7};8 9struct T {10};11 12struct Range {};13int begin(Range); // expected-note {{not viable}}14int end(Range);15 16namespace NS {17  struct ADL {};18  struct iter {19    int operator*();20    bool operator!=(iter);21    void operator++();22  };23  iter begin(ADL); // expected-note {{not viable}}24  iter end(ADL);25 26  struct NoADL {};27}28NS::iter begin(NS::NoADL); // expected-note {{not viable}}29NS::iter end(NS::NoADL);30 31void f() {32  int a[] = {1, 2, 3};33  for (auto b : S()) {} // ok34  for (auto b : T()) {} // expected-error {{invalid range expression of type 'T'}}35  for (auto b : a) {} // ok36  for (int b : NS::ADL()) {} // ok37  for (int b : NS::NoADL()) {} // expected-error {{invalid range expression of type 'NS::NoADL'}}38}39 40void PR11601() {41  void (*vv[])() = {PR11601, PR11601, PR11601};42  for (void (*i)() : vv) i();43}44