----- Original Message ----- From: "Paul Mensonides" <[EMAIL PROTECTED]>
> > I can't tell what EDG thinks it is, but whatever it is, it's not a > > function type. > > EDG treats it like a special type of function type. For instance, trying to > apply const to it yields a "applying const to a function-type" error. Also, > 'typeid(R).name()' yields "void (int)" which is, of course, a function type. > However, 'is_same<R, void (int)>::value' yields false. On the other hand, > 'typeid(R).name()', when 'R' is from a const-qualified > pointer-to-member-function, yields "void (int) const", which is obviously > *not* a function type. The best I can make out is that EDG treats it as a > "member function type". Actually, you can make Comeau C++ crash like this (not even an ICE, just a total crash): #include <iostream> #include <typeinfo> template<class> struct get; template<class R, class C> struct get<R C::*> { typedef R type; }; struct X { }; get< int (X::*)(void) >::type function; int main(void) { std::cout << typeid(function).name() << &std::endl; return 0; } Everything compiles fine until you attempt the call to typeid. Also, it doesn't allow you to define the function either: get< int (X::*)(void) >::type function; int function(void) { // error return 0; } I'll talk to Daveed about what is going on here. Paul Mensonides _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost