- Capturing variables by-reference and by-copy within a lambda - The representation of lambda captures - The creation of the non-static data members in the lambda class that store the captured variables - The initialization of the non-static data members from the captured variables - Pretty-printing lambda expressions There are a number of FIXMEs, both explicit and implied, including: - Creating a field for a capture of 'this' - Improved diagnostics for initialization failures when capturing variables by copy - Dealing with temporaries created during said initialization - Template instantiation - AST (de-)serialization - Binding and returning the lambda expression; turning it into a proper temporary - Lots and lots of semantic constraints - Parameter pack captures llvm-svn: 149977
16 lines
637 B
C++
16 lines
637 B
C++
// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -verify
|
|
|
|
class NonCopyable {
|
|
NonCopyable(const NonCopyable&); // expected-note 2 {{implicitly declared private here}}
|
|
};
|
|
|
|
void capture_by_copy(NonCopyable nc, NonCopyable &ncr) {
|
|
// FIXME: error messages should talk about capture
|
|
[nc] { }; // expected-error{{field of type 'NonCopyable' has private copy constructor}} \
|
|
// expected-error{{lambda expressions are not supported yet}}
|
|
[ncr] { }; // expected-error{{field of type 'NonCopyable' has private copy constructor}} \
|
|
// expected-error{{lambda expressions are not supported yet}}
|
|
}
|
|
|
|
// FIXME: arrays!
|