// Copyright (c) 2013 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. #include "weak_ptr_factory.h" namespace should_succeed { class OnlyMember { base::WeakPtrFactory<OnlyMember> factory_; }; class FactoryLast { bool bool_member_; int int_member_; base::WeakPtrFactory<FactoryLast> factory_; }; class FactoryRefersToOtherType { bool bool_member_; base::WeakPtrFactory<bool> bool_ptr_factory_; }; class FirstFactoryRefersToOtherType { bool bool_member_; base::WeakPtrFactory<bool> bool_ptr_factory_; int int_member_; base::WeakPtrFactory<FirstFactoryRefersToOtherType> factory_; }; class TwoFactories { bool bool_member_; int int_member_; base::WeakPtrFactory<TwoFactories> factory1_; base::WeakPtrFactory<TwoFactories> factory2_; }; template <class T> class ClassTemplate { public: ClassTemplate() : factory_(this) {} private: bool bool_member_; base::WeakPtrFactory<ClassTemplate> factory_; }; // Make sure the template gets instantiated: ClassTemplate<int> g_instance; } // namespace should_succeed namespace should_fail { class FactoryFirst { base::WeakPtrFactory<FactoryFirst> factory_; int int_member; }; class FactoryMiddle { bool bool_member_; base::WeakPtrFactory<FactoryMiddle> factory_; int int_member_; }; class TwoFactoriesOneBad { bool bool_member_; base::WeakPtrFactory<TwoFactoriesOneBad> factory1_; int int_member_; base::WeakPtrFactory<TwoFactoriesOneBad> factory2_; }; template <class T> class ClassTemplate { public: ClassTemplate() : factory_(this) {} private: base::WeakPtrFactory<ClassTemplate> factory_; bool bool_member_; }; // Make sure the template gets instantiated: ClassTemplate<int> g_instance; } // namespace should_fail int main() { }