------- Additional Comments From pinskia at gcc dot gnu dot org 2005-09-22
15:17 -------
the error message about ambiguous overload is correct as there are two
functions there.
operator* in the global namespace and operator* in the NS namespace.
You most likely wanted to implement operator* in the NS namespace and not a new
one in the global
namespace.
The following code does what you wanted to do:
// Barebones code to reproduce the problem:
// Interface
namespace NS
{
template<typename T> class X {};
template<typename T> X<T> operator*(const X<T> &a, const X<T> &b);
}
// Implementation
template<typename T>
NS::X<T>NS::operator*(const NS::X<T> &a,const NS::X<T> &b)
{
return NS::X<T>();
}
// Application
int main(int argc, char *argv[])
{
NS::X<int> tmp = NS::X<int>() * NS::X<int>();
}
Notice how I wrote the Implementation.
--
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution| |INVALID
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24011