[v3]libstdc++/13631
François Dumont
francois.cppdevs@free.fr
Tue Dec 14 21:10:00 GMT 2010
On 12/13/2010 11:11 PM, Paolo Carlini wrote:
>
> The issue is that the entire *.so is built with no implicit templates,
> thus the error, because during the build the implicit instantiation of a
> template (required elsewhere in the *.so) is suppressed. In general, we
> have explicit instantiation *.cc files in /src for that reason. Anyway,
> I'm indeed quite dubious that the way to go is using<map> as an
> implementation detail, it would be the first time we do something
> similar. But if we can find a way to have such uses in a *.cc file, and
> then export from the *.so only functions using it behind the scenes, it
> would still make sense...
>
> Paolo.
>
Thanks for the tip, indeed with the explicit instantiation it works.
Here is attached what I came to.
I agree that explicitly instantiating the map and associated _Rb_tree
might be too much but I hope that optimization will only keep what is
really used. Just tell me if you prefer I introduce some kind of hand
written map equivalent.
The only problem left is in the usage of __gnu_cxx::__mutex:
messages_members.cc:73:7: error: ‘__mutex’ in namespace ‘__gnu_cxx’ does
not name a type
messages_members.cc: In member function ‘{anonymous}::Catalogs::catalog
{anonymous}::Catalogs::_M_add(const string&)Â’:
messages_members.cc:52:2: error: ‘__scoped_lock’ is not a member of
‘__gnu_cxx’
messages_members.cc:52:27: error: expected ‘;’ before ‘lock’
I though __mutex was a compiler intrinsic but it is not or I need to add
some compilation option to make it available. I already try to add
-std=gnu++0x with no success. What is needed to use __mutex ?
François
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: messages_members.patch
URL: <http://gcc.gnu.org/pipermail/libstdc++/attachments/20101214/8cb0dbdb/attachment.ksh>
More information about the Libstdc++
mailing list