1*67e74705SXin Li // RUN: %clang_cc1 -std=c++11 -emit-llvm %s -o - -triple=x86_64-apple-darwin9 | FileCheck %s 2*67e74705SXin Li 3*67e74705SXin Li struct B { 4*67e74705SXin Li template <class U> U f(); 5*67e74705SXin Li }; 6*67e74705SXin Li 7*67e74705SXin Li struct A { 8*67e74705SXin Li B b; 9*67e74705SXin Li // implicitly rewritten to (*this).b.f<U>() 10*67e74705SXin Li template <class U> auto f() -> decltype (b.f<U>()); 11*67e74705SXin Li template <class U> auto g() -> decltype (this->b.f<U>()); 12*67e74705SXin Li }; 13*67e74705SXin Li main()14*67e74705SXin Liint main() { 15*67e74705SXin Li A a; 16*67e74705SXin Li // CHECK: call i32 @_ZN1A1fIiEEDTcldtdtdefpT1b1fIT_EEEv 17*67e74705SXin Li a.f<int>(); 18*67e74705SXin Li // CHECK: call i32 @_ZN1A1gIiEEDTcldtptfpT1b1fIT_EEEv 19*67e74705SXin Li a.g<int>(); 20*67e74705SXin Li } 21