Boost logo

Boost Users :

From: Joaquín Mª López Muñoz (joaquin_at_[hidden])
Date: 2003-11-06 09:00:10


Ben Hutchings ha escrito:

> Joaquín Mª López Muñoz <joaquin_at_[hidden]> wrote:
> > The following programs does not compile with error
> >
> > foo.cpp: In function `int main()':
> > foo.cpp:11: no matching function for call to `foo(std::string)'
> >
> > Program code:
> >
> > #include <boost/call_traits.hpp>
> > #include <string>
> >
> > template<typename Type>
> > void foo(typename boost::call_traits<Type>::param_type x)
> > {
> > }
> >
> > int main()
> > {
> > foo(std::string("bar"));
> >
> > return 0;
> > }
> >
> >
> > Environment is GCC 3.2 20020927 (prerelease) under Cygwin.
> > Anyvody run into a similar problem? Workarounds, ideas? Thanx
> > in advance.
>
> This is standard behaviour. See my explanation in
> <http://groups.google.com/groups?selm=slrnbisehj.1pc.do-not-spam-benh%40tin.bwsint.com>.
>

Thanks for the URL. Gotta look the section of the std you refer to.

>
> Without knowing what it is you are trying to do, I cannot offer
> a workaround.

With pleasure. My original design was

template<typename Type>
void foo(const Type& x)
{
}

(of course the actual code does something useful)
and I wanted to take advantage of the call_traits<>::param_type optimization
for basic types.

So, no way? Should I revert to const Type&? Some clever workaround
to help the compiler swallow the construct? Thx in advance.

Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net