In file included from base_refcounted.cpp:5: ./base_refcounted.h:47:3: warning: [chromium-style] Classes that are ref-counted should have destructors that are declared protected or private. ~PublicRefCountedDtorInHeader() {} ^ ./base_refcounted.h:44:7: note: [chromium-style] 'PublicRefCountedDtorInHeader' inherits from 'base::RefCounted<PublicRefCountedDtorInHeader>' here : public base::RefCounted<PublicRefCountedDtorInHeader> { ^ ./base_refcounted.h:59:3: warning: [chromium-style] Classes that are ref-counted should have destructors that are declared protected or private. ~PublicRefCountedThreadSafeDtorInHeader() {} ^ ./base_refcounted.h:55:7: note: [chromium-style] 'PublicRefCountedThreadSafeDtorInHeader' inherits from 'base::RefCountedThreadSafe<PublicRefCountedThreadSafeDtorInHeader>' here : public base::RefCountedThreadSafe< ^ ./base_refcounted.h:73:3: warning: [chromium-style] Classes that are ref-counted and have non-private destructors should declare their destructor virtual. ~ProtectedRefCountedDtorInHeader() {} ^ ./base_refcounted.h:110:3: warning: [chromium-style] Classes that are ref-counted should have destructors that are declared protected or private. ~DerivedProtectedToPublicInHeader() override {} ^ ./base_refcounted.h:107:7: note: [chromium-style] 'DerivedProtectedToPublicInHeader' inherits from 'ProtectedRefCountedVirtualDtorInHeader' here : public ProtectedRefCountedVirtualDtorInHeader { ^ ./base_refcounted.h:81:7: note: [chromium-style] 'ProtectedRefCountedVirtualDtorInHeader' inherits from 'base::RefCounted<ProtectedRefCountedVirtualDtorInHeader>' here : public base::RefCounted<ProtectedRefCountedVirtualDtorInHeader> { ^ ./base_refcounted.h:115:7: warning: [chromium-style] Classes that are ref-counted should have explicit destructors that are declared protected or private. class ImplicitDerivedProtectedToPublicInHeader ^ ./base_refcounted.h:116:7: note: [chromium-style] 'ImplicitDerivedProtectedToPublicInHeader' inherits from 'ProtectedRefCountedVirtualDtorInHeader' here : public ProtectedRefCountedVirtualDtorInHeader { ^ ./base_refcounted.h:81:7: note: [chromium-style] 'ProtectedRefCountedVirtualDtorInHeader' inherits from 'base::RefCounted<ProtectedRefCountedVirtualDtorInHeader>' here : public base::RefCounted<ProtectedRefCountedVirtualDtorInHeader> { ^ ./base_refcounted.h:145:1: warning: [chromium-style] Classes that are ref-counted should have destructors that are declared protected or private. class ImplementsAPublicInterface ^ ./base_refcounted.h:147:7: note: [chromium-style] 'ImplementsAPublicInterface' inherits from 'base::RefCounted<ImplementsAPublicInterface>' here public base::RefCounted<ImplementsAPublicInterface> { ^ ./base_refcounted.h:139:3: note: [chromium-style] Public destructor declared here virtual ~APublicInterface() {} ^ ./base_refcounted.h:146:7: note: [chromium-style] 'ImplementsAPublicInterface' inherits from 'APublicInterface' here : public APublicInterface, ^ ./base_refcounted.h:164:1: warning: [chromium-style] Classes that are ref-counted should have explicit destructors that are declared protected or private. class ImplementsAnImplicitInterface ^ ./base_refcounted.h:166:7: note: [chromium-style] 'ImplementsAnImplicitInterface' inherits from 'base::RefCounted<ImplementsAnImplicitInterface>' here public base::RefCounted<ImplementsAnImplicitInterface> { ^ ./base_refcounted.h:158:7: note: [chromium-style] No explicit destructor for 'AnImplicitInterface' defined class AnImplicitInterface { ^ ./base_refcounted.h:165:7: note: [chromium-style] 'ImplementsAnImplicitInterface' inherits from 'AnImplicitInterface' here : public AnImplicitInterface, ^ ./base_refcounted.h:204:3: warning: [chromium-style] Classes that are ref-counted and have non-private destructors should declare their destructor virtual. ~RefcountedType() {} ^ ./base_refcounted.h:204:3: warning: [chromium-style] Classes that are ref-counted and have non-private destructors should declare their destructor virtual. base_refcounted.cpp:16:3: warning: [chromium-style] Classes that are ref-counted should have destructors that are declared protected or private. ~AnonymousDerivedProtectedToPublicInImpl() override {} ^ base_refcounted.cpp:13:7: note: [chromium-style] 'AnonymousDerivedProtectedToPublicInImpl' inherits from 'ProtectedRefCountedVirtualDtorInHeader' here : public ProtectedRefCountedVirtualDtorInHeader { ^ ./base_refcounted.h:81:7: note: [chromium-style] 'ProtectedRefCountedVirtualDtorInHeader' inherits from 'base::RefCounted<ProtectedRefCountedVirtualDtorInHeader>' here : public base::RefCounted<ProtectedRefCountedVirtualDtorInHeader> { ^ ./base_refcounted.h:73:3: warning: [chromium-style] Classes that are ref-counted and have non-private destructors should declare their destructor virtual. ~ProtectedRefCountedDtorInHeader() {} ^ base_refcounted.cpp:33:3: warning: [chromium-style] Classes that are ref-counted should have destructors that are declared protected or private. ~PublicRefCountedDtorInImpl() {} ^ base_refcounted.cpp:30:7: note: [chromium-style] 'PublicRefCountedDtorInImpl' inherits from 'base::RefCounted<PublicRefCountedDtorInImpl>' here : public base::RefCounted<PublicRefCountedDtorInImpl> { ^ base_refcounted.cpp:59:3: warning: [chromium-style] Classes that are ref-counted should have destructors that are declared protected or private. ~UnsafeTypedefChainInImpl() {} ^ base_refcounted.cpp:56:34: note: [chromium-style] 'UnsafeTypedefChainInImpl' inherits from 'Baz::MyLocalTypedef' (aka 'RefCounted<Foo::BarInterface>') here class UnsafeTypedefChainInImpl : public Baz::MyLocalTypedef { ^ 13 warnings generated.