1//===--- Lambda.h - Types for C++ Lambdas -----------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9/// 10/// \file 11/// \brief Defines several types used to describe C++ lambda expressions 12/// that are shared between the parser and AST. 13/// 14//===----------------------------------------------------------------------===// 15 16 17#ifndef LLVM_CLANG_BASIC_LAMBDA_H 18#define LLVM_CLANG_BASIC_LAMBDA_H 19 20namespace clang { 21 22/// \brief The default, if any, capture method for a lambda expression. 23enum LambdaCaptureDefault { 24 LCD_None, 25 LCD_ByCopy, 26 LCD_ByRef 27}; 28 29/// \brief The different capture forms in a lambda introducer 30/// 31/// C++11 allows capture of \c this, or of local variables by copy or 32/// by reference. C++1y also allows "init-capture", where the initializer 33/// is an expression. 34enum LambdaCaptureKind { 35 LCK_This, ///< Capturing the \c this pointer 36 LCK_ByCopy, ///< Capturing by copy (a.k.a., by value) 37 LCK_ByRef ///< Capturing by reference 38}; 39 40} // end namespace clang 41 42#endif // LLVM_CLANG_BASIC_LAMBDA_H 43