It seems to want me to use as_ublas: template<typename out_t, typename in_t> inline out_t norm_2 (in_t const& in) { return ublas::norm_2 (in.as_ublas()); } That works (although I don't understand why)