namespace EManip {
template <class T> void do_assign(T* d); };
template <class T> void do_assign(T* d);
template <class T>
struct MatrixC
{
void foo () {
EManip::do_assign<T> (0);
&EManip::do_assign<T>; &do_assign<T>; EManip::do_assign<T>; do_assign<T>; }
};
void foo(MatrixC <double> *ptr)
{
EManip::do_assign<double>; &EManip::do_assign<double>; ptr->foo ();
void (*p1) (int *) = &do_assign<double>; void (*p2) (int *) = &EManip::do_assign<double>; void (*p3) (int *) = &do_assign;
void (*p4) (int *) = &EManip::do_assign;
}