Home | History | Annotate | Download | only in tests
      1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef MISSING_CTOR_DLLEXPORT_H_
      6 #define MISSING_CTOR_DLLEXPORT_H_
      7 
      8 struct MyString {
      9   MyString();
     10   MyString(const MyString&);
     11   MyString(MyString&&);
     12 };
     13 
     14 template <class T>
     15 struct MyVector {
     16   MyVector();
     17   MyVector(const MyVector&);
     18   MyVector(MyVector&&);
     19 };
     20 
     21 // For now, this should only warn on the missing constructor, not on the missing
     22 // copy and move constructors on dllexported classes.
     23 class __declspec(dllexport) MissingCtorsArentOKInHeader {
     24  public:
     25 
     26  private:
     27   MyVector<int> one_;
     28   MyVector<MyString> two_;
     29 };
     30 
     31 class __declspec(dllexport) InlineImplicitMoveCtorOK {
     32  public:
     33   InlineImplicitMoveCtorOK();
     34 
     35  private:
     36   // ctor weight = 12, dtor weight = 9.
     37   MyString one_;
     38   MyString two_;
     39   MyString three_;
     40   int four_;
     41   int five_;
     42   int six_;
     43 };
     44 
     45 class __declspec(dllexport) ExplicitlyDefaultedInlineAlsoWarns {
     46  public:
     47   ExplicitlyDefaultedInlineAlsoWarns() = default;
     48   ~ExplicitlyDefaultedInlineAlsoWarns() = default;
     49   ExplicitlyDefaultedInlineAlsoWarns(
     50       const ExplicitlyDefaultedInlineAlsoWarns&) = default;
     51   ExplicitlyDefaultedInlineAlsoWarns(ExplicitlyDefaultedInlineAlsoWarns&&) =
     52       default;
     53 
     54  private:
     55   MyVector<int> one_;
     56   MyVector<MyString> two_;
     57 
     58 };
     59 
     60 #endif  // MISSING_CTOR_DLLEXPORT_H_
     61