Boost logo

Boost :

From: Joaquín Mª López Muñoz (joaquin_at_[hidden])
Date: 2004-05-25 07:32:29


Gennadiy Rozental ha escrito:

> > > P.S. BTW could anybody give some hint on "very short" error message by
> Intel
> > > compiler here:
> > > http://tinyurl.com/2c2zy
> > >
> >
> > The problem seems to lie in that basic_cstring<>::npos is an unnamed
> > enum, and ICC does not like it to be passed as a template arg (I don't
> > actually know if this is a conformant diagnostic.) Anyway, the problem
> > goes away (confirmed in ICC 7.1) with the folowing patch in
> > basic_cstring.hpp:
>
> Thanks, Joaquín
>
> Applied. Is it indeed invalid?

I've investigated a little, and seems like it is really invalid. Comeau
online yields the following:

template<typename T>
void foo(const T& t)
{
}

enum{bar=0};

int main()
{
  foo(bar);
}

Comeau C/C++ 4.3.3 (Aug 6 2003 15:13:37) for ONLINE_EVALUATION_BETA1
Copyright 1988-2003 Comeau Computing. All rights reserved.
MODE:strict errors C++

"ComeauTest.c", line 10: error: a template argument may not reference an unnamed
type
    foo(bar);
    ^

So the patch puts you on the safe side.

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


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk