1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 -fsyntax-only -verify %s 28e8fb3be5bd78f0564444eca02b404566a5f3b5dAndy Gibbs// expected-no-diagnostics 369be8d60ded8bbfbd30facf0590c97920a074f46Douglas Gregor 469be8d60ded8bbfbd30facf0590c97920a074f46Douglas Gregornamespace N1 { 569be8d60ded8bbfbd30facf0590c97920a074f46Douglas Gregor struct X { }; 669be8d60ded8bbfbd30facf0590c97920a074f46Douglas Gregor int& f(void*); 769be8d60ded8bbfbd30facf0590c97920a074f46Douglas Gregor} 869be8d60ded8bbfbd30facf0590c97920a074f46Douglas Gregor 969be8d60ded8bbfbd30facf0590c97920a074f46Douglas Gregornamespace N2 { 1069be8d60ded8bbfbd30facf0590c97920a074f46Douglas Gregor template<typename T> struct Y { }; 1169be8d60ded8bbfbd30facf0590c97920a074f46Douglas Gregor} 1269be8d60ded8bbfbd30facf0590c97920a074f46Douglas Gregor 1369be8d60ded8bbfbd30facf0590c97920a074f46Douglas Gregornamespace N3 { 1469be8d60ded8bbfbd30facf0590c97920a074f46Douglas Gregor void test() { 1569be8d60ded8bbfbd30facf0590c97920a074f46Douglas Gregor int &ir = f((N2::Y<N1::X>*)0); 1669be8d60ded8bbfbd30facf0590c97920a074f46Douglas Gregor } 1769be8d60ded8bbfbd30facf0590c97920a074f46Douglas Gregor} 18daa439a6c47d3299157b94a496bf22389bbc77a3Douglas Gregor 19daa439a6c47d3299157b94a496bf22389bbc77a3Douglas Gregorint g(void *); 20daa439a6c47d3299157b94a496bf22389bbc77a3Douglas Gregorlong g(N1::X); 21daa439a6c47d3299157b94a496bf22389bbc77a3Douglas Gregor 22daa439a6c47d3299157b94a496bf22389bbc77a3Douglas Gregornamespace N1 { 23daa439a6c47d3299157b94a496bf22389bbc77a3Douglas Gregor void h(int (*)(void *)); 24daa439a6c47d3299157b94a496bf22389bbc77a3Douglas Gregor} 25daa439a6c47d3299157b94a496bf22389bbc77a3Douglas Gregor 26daa439a6c47d3299157b94a496bf22389bbc77a3Douglas Gregorvoid test() { 27daa439a6c47d3299157b94a496bf22389bbc77a3Douglas Gregor h((&g)); 28daa439a6c47d3299157b94a496bf22389bbc77a3Douglas Gregor} 29