namespace arrayRecords {
-int total = 0;
-
-class Adder {
+class NonTriviallyDestructible {
public:
- Adder(int x); // out of line below
- ~Adder() {}
+ ~NonTriviallyDestructible() {}
};
-Adder::Adder(int x) {
- total += x;
-}
-
struct Foo {
int x;
Foo(int x) : x(x) {}
};
-struct S1 {
- S1();
+struct Elidable {
+ Elidable();
};
void foo(int size) {
- S1 y; // no warning
- S1 yarray[2]; // no warning
- S1 dynArray[size]; // no warning
- S1 nestedArray[1][2][3]; // no warning
+ Elidable elidable; // no warning
+ Elidable elidableArray[2]; // no warning
+ Elidable elidableDynArray[size]; // no warning
+ Elidable elidableNestedArray[1][2][3]; // no warning
- Adder scalerInFuncScope = 134; // no warning
- Adder arrayInFuncScope[] = { 135, 136 }; // no warning
- Adder nestedArrayInFuncScope[2][2] = { {1,2}, {3,4} }; // no warning
+ NonTriviallyDestructible scalar; // no warning
+ NonTriviallyDestructible array[2]; // no warning
+ NonTriviallyDestructible nestedArray[2][2]; // no warning
Foo fooScalar = 1; // expected-warning {{unused variable 'fooScalar'}}
Foo fooArray[] = {1,2}; // expected-warning {{unused variable 'fooArray'}}
template<int N>
void bar() {
- Adder scaler = 123; // no warning
- Adder array[N] = {1,2}; // no warning
+ NonTriviallyDestructible scaler; // no warning
+ NonTriviallyDestructible array[N]; // no warning
}
void test() {