namespace hoge { namespace fuga { namespace piyo { namespace impl {
template <class t> struct x { /* ... */ } ;
}}}}

template <class t> struct x {
typedef hoge::fuga::piyo::impl::x<t> type ;
} ;

template <class t> void f(typename x<t>::type const & ) { /* ... */ }

int main(void) {
x<char>::type c;
x<short>::type s;
x<long>::type l;

f(c);
f(s);
f(l);

return 0 ;
}


上のように〜::typeを引数にするとlookupが働かないみたいなんですが
これをうまく動かせる簡単な方法はありますか?