This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Sample conformant, clean <c...> headers



hi -

Benjamin Kosnik <bkoz@redhat.com> writes:
> I would like feedback on Stephen's approach. I think it's sound, but am 
> interested in hearing from Nathan and others.
> 
> Nathan? Care to comment? Scott? 

The problem i see is that the following test doesn't seem to work
(with the 20010529 version of gcc 3.0):

-------------------------------------
#include <cctype>
#include <ctype.h>

using namespace std;

int
main(int argc, char* argv[])
{
    //using std::isalpha;

    int k = 1;
    if (isalpha('k'))
    {
        k = 0;
    }
    return k;
}
-------------------------------------

(This is Stephen's test program, but with `using namespace std' instead
of the `using std::isalpha'.)

If i try to compile this with Stephen's std_cctype.h header (creating
a local `cctype' that includes it), i get:

$ g++ -c -I. ./test_cctype.cc 
test_cctype.cc: In function `int main(int, char**)':
test_cctype.cc:12: call of overloaded `isalpha(char)' is ambiguous
/usr/include/ctype.h:92: candidates are: int isalpha(int)
std_cctype.h:60:                 int std::isalpha(int)


I think this comes back to the requirement that for names from the
C headers, ::foo and std::foo are supposed to be the _same_ function.

As far as i can tell, the example above is allowed by the standard,
and should compile.  Having that not work is likely to break lots
of real-world code.

Am i missing something here?
thanks,
sss


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]