|  | // 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() { | 
|  | } | 
|  |  |