Alexander Dreyer wrote:
> Dear Dave,

> I'll try to find time to have a look at it. But unfortunately, Sun, in
> particular the Sun-Compiler, is out of the scope of the projects, I'm
> working on. So I cannot promise to fix it in the next days. Meanwhile,
> you can have a look, how to teach the Sun-Compiler the missing STL stuff
> (see below).

It would be good if you can look at it, as I do not believe I can 'teach' the 
compiler. There are no options to enable any features for C89 - see below. It 
should be supporting the standard.

>> Part of the issue seems to be that few really understands SCons, so I
>> suspect the patches are far from optimal. I've also seen some comments
>> to suggest SCons is a good replacment for make, but it is nowhere near
>> as good as autoconf/automake for generating a makefile. But that aside,
>> to get to the specific issues in Sage:

> autoconf/automake is far from being a modern configure/build system. If
> one really wants to have something based on Makefiles cmake would be the
> system of choice.

For use in Unix platforms, it does work well though. Some pretty big projects 
use it - Python, gcc, Apache etc. I realise it is not a Windows solution though.

>> Libtool is a tool which sorts all of this out, picking the right flags
>> on every platform. But that is designed to integrate with
>> autoconf/automake, not SCons.
> scons picks up the right flag, the problem is the the flag was
> explicitly by Sage



>> "polybori/include/CCuddZDD.h", line 308: Warning (Anachronism): Formal
>> argument func of type DdNode*(*)(DdManager*,DdNode*,int) in call to
>> polybori::CCuddDDBase<polybori::CCuddZDD>::apply(DdNode*(*)(DdManager*,DdNode*,int),
>> int) const is being passed extern "C" DdNode*(*)(DdManager*,DdNode*,int).
> [...]
> These warning seem to be caused, because a C function was called by C++
> code. But as there are only warnings, I would postpone that issue. 

Fair enough, though perhaps worth investigating. These things have a habit of 
coming back to bite one.

> More interesting is the following.

>> "polybori/include/CCuddNavigator.h", line 157: Error: iterator_traits is
>> not a member of std.
> std::iterator_traits is part of the C++ standard. So maybe one hat to
> tell the Sun-Compiler to obey C++98 or later?
> 
> As far as I can see, the remaining errors are caused by that error.
> 
> Best regards,
>   Alexander

I've checked the Sun Studio 12.1 compiler documentation

http://docs.sun.com/app/docs/doc/820-7599

and can find no switches that would be needed to obey a 1998 standard. The 
documentation says:

"The C++ compiler (CC) supports the ISO International Standard for C++, ISO IS 
14882:2003, Programming Languageā€”C++. The readme file that accompanies the 
current release describes any departures from requirements in the standard."

Looking at the readme,
http://developers.sun.com/sunstudio/documentation/ss12u1/mr/READMEs/c++.html#problems


there's a short section on what is not implemented:

I. Standards Not Implemented
     *
The C++ compiler supports the ISO standard for C++, ISO IS 14882:1998, 
Programming Language C++. The following list describes requirements in the 
standard that are not supported in this release:
  * The export model of template compilation
  * Some functionality of the C++ library is not implemented in the default 
libCstd to preserve binary compatibility between the current and earlier 
releases of the C++ compiler. For more information, check the C++ FAQ. I can't 
see anything relevant looking in the FAQ.


It seems odd that in one place the Sun Studio documents says it supports ISO IS 
14882:2003 and in another ISO IS 14882:1998. But I've looked at the compiler 
documentation and can find nothing to say any flag is needed to enable specific 
standards. There is a flag which will make the compiler default to an 
incompatible implementation to the ISO standard used in some old Sun C++ 
compiler, but there is nothing needed to support any new features.


I'm not a C++ programmer myself, but I'll ask on comp.lang.c++, in the hope 
someone there might know how to work around this problem.

A Google on the exact error message

http://www.google.com/#hl=en&source=hp&fkt=5002&fsdt=14383&q=%22Error%3A+iterator_traits+is+not+a+member+of+std%22&btnG=Google+Search&aq=f&aqi=&oq=%22Error%3A+iterator_traits+is+not+a+member+of+std%22&fp=2bf6fc1127eea2c7

shows only 9 hits, about half of which are discussions about Sage and PolyBoRi. 
The old message with this error is over 6 years old, so I would assume if it 
was 
a compiler bug, Sun would have sorted it out in 6 years, but that is by no 
means 
certain.

Dave



-- 
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org

Reply via email to