// This file is distributed under the University of Illinois Open Source License. | |
// See LICENSE.TXT for details. | |
// RUN: cxx_compiler cxx_11 -c %s -o %t.o | |
// RUN: bindump %t.o | FileCheck prefixes %s | |
// Test default arguments apperaing in class definitions | |
// CHECK-DAG: _ZZN1S1fEiiEd0_NKUlvE0_clEv | |
// CHECK-DAG: _ZZN1S1fEiiEd0_NKUlvE_clEv | |
// CHECK-DAG: _ZZN1S1fEiiEd_NKUlvE_clEv | |
struct S { | |
void f(int a = [] {return 1;}() + [] {return 2;}(), int b = []{return 3;}()); | |
}; | |
void foo() { | |
S s; | |
s.f(); | |
} | |
// inclass initializers of class members | |
// CHECK-DAG: _ZNK2S21yMUlvE_clEv | |
struct S2 { | |
int y = []{ return 5;}(); | |
}; | |
void foo2() { | |
S2 s3; | |
} | |
// the bodies of inline functions | |
// CHECK-DAG: _ZZ4foo3vENKUlvE_clEv | |
inline int foo3() { | |
int t = []{ return 7;}(); | |
return t; | |
} | |
void bar() { | |
foo3(); | |
} | |
// the bodies of non-exported nonspecialized template functions | |
// CHECK-DAG: _ZZ4foo4IfEvvENKUlvE_clEv | |
template <typename C> void foo4() { | |
int u = [] { return 8;}(); | |
} | |
void call_foo4() { | |
foo4<float>(); | |
} | |
// initializers of nonspecialized static members of template classes | |
// CHECK-DAG: _ZNK2S1IiE1xMUlvE_clEv | |
template<typename T> struct S1 { | |
static int x; | |
}; | |
template<typename T> int S1<T>::x = []{ return 1;}(); | |
template int S1<int>::x; |