12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- // Copyright (c) 2011 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef MISSING_CTOR_H_
- #define MISSING_CTOR_H_
- struct MyString {
- MyString();
- ~MyString();
- MyString(const MyString&);
- MyString(MyString&&);
- };
- template <class T>
- struct MyVector {
- MyVector();
- ~MyVector();
- MyVector(const MyVector&);
- MyVector(MyVector&&);
- };
- // Note: this should warn for an implicit copy constructor too, but currently
- // doesn't, due to a plugin bug.
- class MissingCtorsArentOKInHeader {
- public:
- private:
- MyVector<int> one_;
- MyVector<MyString> two_;
- };
- // Inline move ctors shouldn't be warned about. Similar to the previous test
- // case, this also incorrectly fails to warn for the implicit copy ctor.
- class InlineImplicitMoveCtorOK {
- public:
- InlineImplicitMoveCtorOK();
- private:
- // ctor weight = 12, dtor weight = 9.
- MyString one_;
- MyString two_;
- MyString three_;
- int four_;
- int five_;
- int six_;
- };
- class ExplicitlyDefaultedInlineAlsoWarns {
- public:
- ExplicitlyDefaultedInlineAlsoWarns() = default;
- ~ExplicitlyDefaultedInlineAlsoWarns() = default;
- ExplicitlyDefaultedInlineAlsoWarns(
- const ExplicitlyDefaultedInlineAlsoWarns&) = default;
- private:
- MyVector<int> one_;
- MyVector<MyString> two_;
- };
- union UnionDoesNotWarn {
- UnionDoesNotWarn() = default;
- UnionDoesNotWarn(const UnionDoesNotWarn& other) = default;
- int a;
- int b;
- int c;
- int d;
- int e;
- int f;
- int g;
- int h;
- int i;
- int j;
- int k;
- int l;
- int m;
- int n;
- int o;
- int p;
- int q;
- int r;
- int s;
- int t;
- int u;
- int v;
- int w;
- int x;
- int y;
- int z;
- };
- #endif // MISSING_CTOR_H_
|