[Sun][Serialization][Graph] Help with workaround for graph/serialize test

I'm trying to clear up the last remaining failures in the Graph library for 1.34.0, but one failure with the Sun compiler has me completely baffled. The error itself looks like this: "../../../boost/archive/detail/oserializer.hpp", line 566: Error: Illegal value for template parameter. "../../../boost/archive/detail/oserializer.hpp", line 566: Error: The type "boost::STATIC_ASSERTION_FAILURE<boost::archive::check_tracking<boost::a djacency_list<boost::vecS, boost::vecS, boost::undirectedS, vertex_properties, edge_properties, boost::no_property, boost::listS>>::value>" is incomplete. "../../../boost/archive/detail/oserializer.hpp", line 566: Error: Illegal value for template parameter. "../../../boost/archive/detail/oserializer.hpp", line 566: Error: The type "boost::STATIC_ASSERTION_FAILURE<boost::archive::check_tracking<boost::a djacency_list<boost::vecS, boost::vecS, boost::undirectedS, vertex_properties, boost::no_property, boost::no_property, boost::listS>>::value>" is incomplete. 4 Error(s) detected. The failure is also shown here: http://tinyurl.com/zarxo Both the serialization and the graph libraries work almost flawlessly with this compiler, but in this case it appears that the compiler just isn't picking up the partial specialization for tracking_level (in boost/graph/adj_list_serialize.hpp). I tried dropping in a partial specialization of check_tracking and the compiler isn't finding that either. Anyone have any ideas? Workarounds? Cheers, Doug

2006/9/29, Doug Gregor <dgregor@cs.indiana.edu>:
I'm trying to clear up the last remaining failures in the Graph library for 1.34.0, but one failure with the Sun compiler has me completely baffled.
The failure is also shown here: http://tinyurl.com/zarxo I will look at compiler source code and try to fix this bug :-)
-- Simon Atanasyan

On Sep 29, 2006, at 4:02 PM, Simon Atanasyan wrote:
2006/9/29, Doug Gregor <dgregor@cs.indiana.edu>:
I'm trying to clear up the last remaining failures in the Graph library for 1.34.0, but one failure with the Sun compiler has me completely baffled.
The failure is also shown here: http://tinyurl.com/zarxo I will look at compiler source code and try to fix this bug :-)
Thanks! If you happen to find a way we can work around the problem in Boost, we'll do it. This isn't super-critical code in Boost, but it's the only thing in the Graph library that doesn't compile with Sun. Doug

2006/9/30, Douglas Gregor <doug.gregor@gmail.com>:
On Sep 29, 2006, at 4:02 PM, Simon Atanasyan wrote:
2006/9/29, Doug Gregor <dgregor@cs.indiana.edu>:
The failure is also shown here: http://tinyurl.com/zarxo I will look at compiler source code and try to fix this bug :-)
If you happen to find a way we can work around the problem in Boost, we'll do it. This isn't super-critical code in Boost, but it's the only thing in the Graph library that doesn't compile with Sun.
There are two bugs in the Sun C++ related to this problem. The first one - compiler does not recognize name of partially specialized class when the name is used without template arguments. % cat test.cc struct C { static const int value = 0; }; template <typename T1, typename T2> struct S; template <typename T> struct S<int, T> { typedef C type; static const int value = S::type::value; // This works static const int value = type::value; }; S<int, int> v; % CC -c test.cc "test.cc", line 13: Error: No parameters provided for template. "test.cc", line 16: Where: While specializing "S<int, int>". "test.cc", line 16: Where: Specialized in non-template code. "test.cc", line 13: Error: An integer constant expression is required here. "test.cc", line 16: Where: While specializing "S<int, int>". "test.cc", line 16: Where: Specialized in non-template code. 2 Error(s) detected. Workaround is obvious. Anyway I plan to fix this bug. The second error is unclear for me. It looks like compiler confused by expression as a template argument of int_ class. Unfortunately trivial test case works fine so I have to investigate further. -- Simon Atanasyan
participants (3)
-
Doug Gregor
-
Douglas Gregor
-
Simon Atanasyan