p8.cpp revision b326ca8ffbea96f9cc8a457b0f57be880304a6f5
1437bbad37074e472b66d427814275de84ca77f19Roderick Sheeter// RUN: %clang_cc1 -std=c++11 %s -verify
2437bbad37074e472b66d427814275de84ca77f19Roderick Sheeter
3437bbad37074e472b66d427814275de84ca77f19Roderick Sheeterclass X0 {
4437bbad37074e472b66d427814275de84ca77f19Roderick Sheeter  void explicit_capture() {
5142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi    int foo;
6142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi
7437bbad37074e472b66d427814275de84ca77f19Roderick Sheeter    (void)[foo, foo] () {}; // expected-error {{'foo' can appear only once}}
8437bbad37074e472b66d427814275de84ca77f19Roderick Sheeter    (void)[this, this] () {}; // expected-error {{'this' can appear only once}}
9437bbad37074e472b66d427814275de84ca77f19Roderick Sheeter    (void)[=, foo] () {}; // expected-error {{'&' must precede a capture when}}
10437bbad37074e472b66d427814275de84ca77f19Roderick Sheeter    (void)[=, &foo] () {};
11437bbad37074e472b66d427814275de84ca77f19Roderick Sheeter    (void)[=, this] () {}; // expected-error {{'this' cannot appear}}
12437bbad37074e472b66d427814275de84ca77f19Roderick Sheeter    (void)[&, foo] () {};
13437bbad37074e472b66d427814275de84ca77f19Roderick Sheeter    (void)[&, &foo] () {}; // expected-error {{'&' cannot precede a capture when}}
14437bbad37074e472b66d427814275de84ca77f19Roderick Sheeter    (void)[&, this] () {};
15437bbad37074e472b66d427814275de84ca77f19Roderick Sheeter  }
16437bbad37074e472b66d427814275de84ca77f19Roderick Sheeter};
17437bbad37074e472b66d427814275de84ca77f19Roderick Sheeter