14e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 24e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// found in the LICENSE file. 44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 54e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "weak_ptr_factory.h" 64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace should_succeed { 74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class OnlyMember { 94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) base::WeakPtrFactory<OnlyMember> factory_; 104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}; 114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class FactoryLast { 134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) bool bool_member_; 144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) int int_member_; 154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) base::WeakPtrFactory<FactoryLast> factory_; 164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}; 174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class FactoryRefersToOtherType { 194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) bool bool_member_; 204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) base::WeakPtrFactory<bool> bool_ptr_factory_; 214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}; 224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class FirstFactoryRefersToOtherType { 244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) bool bool_member_; 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) base::WeakPtrFactory<bool> bool_ptr_factory_; 264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) int int_member_; 274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) base::WeakPtrFactory<FirstFactoryRefersToOtherType> factory_; 284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}; 294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} // namespace should_succeed 314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace should_fail { 334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class FactoryFirst { 354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) base::WeakPtrFactory<FactoryFirst> factory_; 364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) int int_member; 374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}; 384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class FactoryMiddle { 404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) bool bool_member_; 414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) base::WeakPtrFactory<FactoryMiddle> factory_; 424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) int int_member_; 434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}; 444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} // namespace should_fail 464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)int main() { 484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 50