Boost C++ Libraries: Ticket #1715: gcc-4.3 doesn't compile polymorphic_(i)(o)archive.hpp https://svn.boost.org/trac10/ticket/1715 <p> gcc-4.3 fails to compile the serialization library. A build log is attached. </p> <p> If one comments out the following parts of </p> <ul><li>polymorphic_iarchive.hpp </li><li>polymorphic_oarchive.hpp </li></ul><pre class="wiki"> #if !defined(BOOST_NO_INTRINSIC_INT64_T) virtual void save(const boost::int64_t t) = 0; virtual void save(const boost::uint64_t t) = 0; #endif </pre><p> it compiles fine, thus it might involve improper detection of BOOST_NO_INTRINSIC_INT64_T. </p> <p> Best, </p> <blockquote> <p> -- Maik </p> </blockquote> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/1715 Trac 1.4.3 Maik Beckmann <Beckmann.Maik@…> Tue, 25 Mar 2008 19:47:04 GMT attachment set https://svn.boost.org/trac10/ticket/1715 https://svn.boost.org/trac10/ticket/1715 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">build_log</span> </li> </ul> Ticket Maik Beckmann <Beckmann.Maik@…> Mon, 31 Mar 2008 11:02:56 GMT <link>https://svn.boost.org/trac10/ticket/1715#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/1715#comment:1</guid> <description> <p> I found the origin of the problem. </p> <p> This piece of code </p> <pre class="wiki">#if defined(BOOST_NO_INT64_T) \ || (ULONG_MAX != 0xffffffff &amp;&amp; ULONG_MAX == 18446744073709551615u) // 2**64 - 1 # define BOOST_NO_INTRINSIC_INT64_T #endif </pre><p> doesn't work as expected, since ULONG_MAX is not defined at this place when g++-4.3.x is used. </p> <p> The code should check if ULONG_MAX is available before using it. </p> <p> The fact that ULONG_MAX is not defined is caused by the include file cleanup made for GCC-4.3. To bring ULONG_MAX back, just add </p> <pre class="wiki">#include &lt;climits&gt; </pre><p> to the list of include files. </p> <p> A patch which does the suggestions above, and thus fixes the build with g++-4.3.x, is attached. </p> <p> Best, </p> <blockquote> <p> -- Maik </p> </blockquote> </description> <category>Ticket</category> </item> <item> <author>Maik Beckmann <Beckmann.Maik@…></author> <pubDate>Mon, 31 Mar 2008 11:03:51 GMT</pubDate> <title>attachment set https://svn.boost.org/trac10/ticket/1715 https://svn.boost.org/trac10/ticket/1715 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">serialization_gcc43.patch</span> </li> </ul> <p> fix build with GCC-4.3 </p> Ticket Robert Ramey Mon, 31 Mar 2008 15:43:19 GMT status changed; resolution set https://svn.boost.org/trac10/ticket/1715#comment:2 https://svn.boost.org/trac10/ticket/1715#comment:2 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">fixed</span> </li> </ul> <p> good call - fixed in trunk </p> <p> Robert Ramey </p> Ticket Maik Beckmann <Beckmann.Maik@…> Mon, 31 Mar 2008 16:38:32 GMT status changed; resolution deleted https://svn.boost.org/trac10/ticket/1715#comment:3 https://svn.boost.org/trac10/ticket/1715#comment:3 <ul> <li><strong>status</strong> <span class="trac-field-old">closed</span> → <span class="trac-field-new">reopened</span> </li> <li><strong>resolution</strong> <span class="trac-field-deleted">fixed</span> </li> </ul> <p> Your code </p> <pre class="wiki">#if defined(BOOST_NO_INT64_T) #if defined(ULONG_MAX) #if(ULONG_MAX != 0xffffffff &amp;&amp; ULONG_MAX == 18446744073709551615u) // 2**64 - 1 #define BOOST_NO_INTRINSIC_INT64_T #endif #else #define BOOST_NO_INTRINSIC_INT64_T #endif #endif </pre><p> doesn't work, since if BOOST_NO_INT64_T isn't defined ULONG_MAX isn't even considerd. I guess you want </p> <pre class="wiki">#if defined(BOOST_NO_INT64_T) #define BOOST_NO_INTRINSIC_INT64_T #else #if defined(ULONG_MAX) #if(ULONG_MAX != 0xffffffff &amp;&amp; ULONG_MAX == 18446744073709551615u) // 2**64 - 1 #define BOOST_NO_INTRINSIC_INT64_T #endif #else #define BOOST_NO_INTRINSIC_INT64_T #endif #endif </pre><p> but I prefer </p> <pre class="wiki">#if defined(BOOST_NO_INT64_T) #define BOOST_NO_INTRINSIC_INT64_T #else #if defined(ULONG_MAX) #if(ULONG_MAX != 0xffffffff &amp;&amp; ULONG_MAX == 18446744073709551615u) // 2**64 - 1 #define BOOST_NO_INTRINSIC_INT64_T #endif #else #error "ULONG_MAX is not defined" #endif #endif </pre><p> or </p> <pre class="wiki">#if defined(BOOST_NO_INT64_T) #define BOOST_NO_INTRINSIC_INT64_T #elif defined(ULONG_MAX) #if(ULONG_MAX != 0xffffffff &amp;&amp; ULONG_MAX == 18446744073709551615u) // 2**64 - 1 #define BOOST_NO_INTRINSIC_INT64_T #endif #else #error "ULONG_MAX is not defined" #endif </pre> Ticket Robert Ramey Mon, 31 Mar 2008 16:48:47 GMT status changed; resolution set https://svn.boost.org/trac10/ticket/1715#comment:4 https://svn.boost.org/trac10/ticket/1715#comment:4 <ul> <li><strong>status</strong> <span class="trac-field-old">reopened</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">fixed</span> </li> </ul> <p> OK - fixed again </p> Ticket Maik Beckmann <Beckmann.Maik@…> Mon, 31 Mar 2008 16:55:53 GMT <link>https://svn.boost.org/trac10/ticket/1715#comment:5 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/1715#comment:5</guid> <description> <p> Works! </p> <p> Thank you for quickly responding, </p> <blockquote> <p> -- Maik </p> </blockquote> </description> <category>Ticket</category> </item> <item> <author>patrick@…</author> <pubDate>Tue, 24 Jun 2008 18:07:48 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/1715#comment:6 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/1715#comment:6</guid> <description> <p> I'm confused. Isn't the meaning of NO_INTRINSIC_INT64_T that there's no intrinsic 64 bit int, but isn't the long long an intrisic 64 bit type? Why does this get set? When I was first looking at it I though the test in polymorphic_(i/o)archive.hpp to decide whether to include the int64 templates was backwards, but now this tells me the test was right, but I didn't understand? </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Essexiaerania</dc:creator> <pubDate>Sat, 10 Sep 2011 08:27:54 GMT</pubDate> <title>component, milestone changed https://svn.boost.org/trac10/ticket/1715#comment:7 https://svn.boost.org/trac10/ticket/1715#comment:7 <ul> <li><strong>component</strong> <span class="trac-field-old">serialization</span> → <span class="trac-field-new">Building Boost</span> </li> <li><strong>milestone</strong> <span class="trac-field-old">To Be Determined</span> → <span class="trac-field-new">Boost 1.48.0</span> </li> </ul> <p> what I was looking for, thanks </p> Ticket