Mercurial > hg > CbC > CbC_llvm
comparison clang/test/SemaCXX/for-range-no-std.cpp @ 150:1d019706d866
LLVM10
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 15:10:13 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
147:c2174574ed3a | 150:1d019706d866 |
---|---|
1 // RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11 | |
2 // RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++98 -Wno-c++11-extensions | |
3 | |
4 struct S { | |
5 int *begin(); | |
6 int *end(); | |
7 }; | |
8 | |
9 struct T { | |
10 }; | |
11 | |
12 struct Range {}; | |
13 int begin(Range); // expected-note {{not viable}} | |
14 int end(Range); | |
15 | |
16 namespace 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 } | |
28 NS::iter begin(NS::NoADL); // expected-note {{not viable}} | |
29 NS::iter end(NS::NoADL); | |
30 | |
31 void f() { | |
32 int a[] = {1, 2, 3}; | |
33 for (auto b : S()) {} // ok | |
34 for (auto b : T()) {} // expected-error {{invalid range expression of type 'T'}} | |
35 for (auto b : a) {} // ok | |
36 for (int b : NS::ADL()) {} // ok | |
37 for (int b : NS::NoADL()) {} // expected-error {{invalid range expression of type 'NS::NoADL'}} | |
38 } | |
39 | |
40 void PR11601() { | |
41 void (*vv[])() = {PR11601, PR11601, PR11601}; | |
42 for (void (*i)() : vv) i(); | |
43 } |