Return-Path: Delivered-To: apmail-incubator-stdcxx-dev-archive@www.apache.org Received: (qmail 28792 invoked from network); 23 Feb 2006 22:17:50 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 23 Feb 2006 22:17:50 -0000 Received: (qmail 26476 invoked by uid 500); 23 Feb 2006 22:17:41 -0000 Delivered-To: apmail-incubator-stdcxx-dev-archive@incubator.apache.org Received: (qmail 26417 invoked by uid 500); 23 Feb 2006 22:17:40 -0000 Mailing-List: contact stdcxx-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: stdcxx-dev@incubator.apache.org Delivered-To: mailing list stdcxx-dev@incubator.apache.org Received: (qmail 26372 invoked by uid 99); 23 Feb 2006 22:17:40 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 23 Feb 2006 14:17:40 -0800 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests= X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: local policy) Received: from [12.17.213.84] (HELO bco-exchange.bco.roguewave.com) (12.17.213.84) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 23 Feb 2006 14:17:39 -0800 Received: from [10.70.2.6] (skynet.bco.roguewave.com [10.70.2.6]) by bco-exchange.bco.roguewave.com with SMTP (Microsoft Exchange Internet Mail Service Version 5.5.2657.72) id FQ7J15D3; Thu, 23 Feb 2006 15:16:52 -0700 Message-ID: <43FE3594.1060303@roguewave.com> Date: Thu, 23 Feb 2006 15:22:12 -0700 From: Liviu Nicoara User-Agent: Mozilla Thunderbird 1.0.7 (X11/20050923) X-Accept-Language: en-us, en MIME-Version: 1.0 To: stdcxx-dev@incubator.apache.org Subject: Re: r. 380238 broken References: <20060222054056.22125.qmail@minotaur.apache.org> <43FE329F.4060907@roguewave.com> <43FE345E.2050707@roguewave.com> In-Reply-To: <43FE345E.2050707@roguewave.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Could it be that the _RWSTD_INSTANTIATE_type macros are defined to 1 when instantiation is needed but not to 0 otherwise? Liviu Liviu Nicoara wrote: > It seems I rushed to a wrong conclusion - I haven't noticed the > definitions for _RWSTD_INSTANTIATE_type's macros. Scratch the diff since > it leads to unsats because of the lack of type instantiations in the > library. Martin, any off-the-shelf ideas as to why I get this: > > In file included from /build/nicoara/stdcxx/include/ios:29, > from /build/nicoara/stdcxx/src/strstream.cpp:38: > /build/nicoara/stdcxx/include/rw/_basic_ios.h:339:42: operator '!' has > no right operand > /build/nicoara/stdcxx/include/rw/_basic_ios.h:346:45: operator '!' has > no right operand > ? > > Liviu > > Liviu Nicoara wrote: > >>Revision 380238 seems to be broken at least on Linux. I believe the >>intention in rw/_defs.h conditionals was to test for the definition of >>the macros in the diff below since stdcxx does not define config macros >>to values (0/1) as a matter of policy. >> >>I changed all instances where the conditional tests for the macro value >>and it builds: >> >>$ svn diff >>Index: include/rw/_defs.h >>=================================================================== >>--- include/rw/_defs.h (revision 380233) >>+++ include/rw/_defs.h (working copy) >>@@ -1310,10 +1310,10 @@ >> && !defined (_RWSTD_NO_EXPLICIT_INSTANTIATION) \ >> && !defined (_RWSTD_NO_INSTANTIATE) >> >>-# define _RWSTD_INSTANTIATE(name, type) \ >>- ( _RWSTD_INSTANTIATE ## name \ >>- && _RWSTD_INSTANTIATE ## type \ >>- && !_RWSTD_NO ## type) >>+# define _RWSTD_INSTANTIATE(name, type) \ >>+ ( defined (_RWSTD_INSTANTIATE ## name) \ >>+ && defined (_RWSTD_INSTANTIATE ## type) \ >>+ && !defined (_RWSTD_NO ## type)) >> >> # define _RWSTD_INSTANTIATE_1(arg) template arg >> # define _RWSTD_INSTANTIATE_2(a1, a2) template a1, a2 >>@@ -1336,7 +1336,7 @@ >> // 'extern' before template explicit instantiation >> # pragma warning (disable: 4231) >> >>-# define _RWSTD_INSTANTIATE(ign1, type) (!_RWSTD_NO ## type) >>+# define _RWSTD_INSTANTIATE(ign1, type) (!defined (_RWSTD_NO ## type)) >> >> # define _RWSTD_INSTANTIATE_1(arg) extern template arg >> # define _RWSTD_INSTANTIATE_2(a1, a2) extern template a1, a2 >>@@ -1345,7 +1345,7 @@ >> // use the extern template extension to declare template >> // specializations that are explicitly instantiated in >> // source (.cpp) files >>-# define _RWSTD_INSTANTIATE(ign1, type) (!_RWSTD_NO ## type) >>+# define _RWSTD_INSTANTIATE(ign1, type) (!defined (_RWSTD_NO ## type)) >> # define _RWSTD_INSTANTIATE_1(arg) extern template arg >> # define _RWSTD_INSTANTIATE_2(a1, a2) extern template a1, a2 >> # define _RWSTD_INSTANTIATE_3(a1, a2, a3) extern template a1, a2, a3 >> > >