<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Boost Interprocess, Map]]></title><description><![CDATA[<p>Hallo, ich versuche gerade in Boost Interprocess eine HWND indizierte Map aus Vektoren aus Strings zu bauen.</p>
<p>Dabei benutze ich zwecks shared memory die Container-Typen von Boost Interprocess (1.47)</p>
<p>Leider kriege ich Template Compilerfehler, die sich schwer nachvollziehen lassen.</p>
<p>typedefs:</p>
<pre><code class="language-cpp">typedef managed_shared_memory::segment_manager segment_manager_t;

typedef allocator&lt;char, segment_manager_t&gt;								char_allocator;
typedef basic_string&lt;char, std::char_traits&lt;char&gt;, char_allocator&gt;		char_string;

typedef allocator&lt;char_string, segment_manager_t&gt;						char_string_allocator;
typedef vector&lt;char_string, char_string_allocator&gt;						char_string_vector;

typedef std::pair&lt;HWND, char_string_vector&gt;									HWND_stringvec_pair;
typedef allocator&lt;HWND_stringvec_pair, segment_manager_t&gt;						HWND_stringvec_allocator;

typedef map&lt;HWND, char_string_vector, std::less&lt;HWND&gt;, HWND_stringvec_allocator&gt;	HWND_stringvec_map;
</code></pre>
<p>Jeder direct-access auf die map scheitert an unvorhandenen default constructoren.</p>
<p>wenn ich z. B. sowas mache:</p>
<pre><code class="language-cpp">char_string_allocator myAlloc(m_pMem-&gt;get_segment_manager());

m_pHwndStringVecMap-&gt;insert(HWND_stringvec_map::value_type(hwnd_des_tages, char_string_vector(myAlloc));
</code></pre>
<p>um dann etwa feuchte träume von map-&gt;find(.. zu bekommen, bekomme ich den originellen fehler:</p>
<pre><code>1&gt;c:\boost_1_47\boost\intrusive\detail\utilities.hpp(234): error C3066: Es gibt verschiedene Möglichkeiten, um ein Objekt dieses Typs mit diesen Argumenten aufzurufen.
1&gt;          Weiterverarbeitung nach vorherigem Fehler nicht möglich; Kompilierung wird abgebrochen.
</code></pre>
<p>Im Grunde hatte ich nicht vor, die ganze Library zu zerlegen um dem Fehler auf die Spur zu kommen.</p>
<p>Ideen?</p>
<p>Praktisch gesehen, lässt sich die Map einfach nicht gebrauchen.</p>
<p>jemand noch ne idee, wie man besser nachvollziehen kann, wir der compiler zu seinen problemen im template-jungel kommt?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/301633/boost-interprocess-map</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 21:37:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/301633.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 31 Mar 2012 14:09:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Boost Interprocess, Map on Sat, 31 Mar 2012 14:09:19 GMT]]></title><description><![CDATA[<p>Hallo, ich versuche gerade in Boost Interprocess eine HWND indizierte Map aus Vektoren aus Strings zu bauen.</p>
<p>Dabei benutze ich zwecks shared memory die Container-Typen von Boost Interprocess (1.47)</p>
<p>Leider kriege ich Template Compilerfehler, die sich schwer nachvollziehen lassen.</p>
<p>typedefs:</p>
<pre><code class="language-cpp">typedef managed_shared_memory::segment_manager segment_manager_t;

typedef allocator&lt;char, segment_manager_t&gt;								char_allocator;
typedef basic_string&lt;char, std::char_traits&lt;char&gt;, char_allocator&gt;		char_string;

typedef allocator&lt;char_string, segment_manager_t&gt;						char_string_allocator;
typedef vector&lt;char_string, char_string_allocator&gt;						char_string_vector;

typedef std::pair&lt;HWND, char_string_vector&gt;									HWND_stringvec_pair;
typedef allocator&lt;HWND_stringvec_pair, segment_manager_t&gt;						HWND_stringvec_allocator;

typedef map&lt;HWND, char_string_vector, std::less&lt;HWND&gt;, HWND_stringvec_allocator&gt;	HWND_stringvec_map;
</code></pre>
<p>Jeder direct-access auf die map scheitert an unvorhandenen default constructoren.</p>
<p>wenn ich z. B. sowas mache:</p>
<pre><code class="language-cpp">char_string_allocator myAlloc(m_pMem-&gt;get_segment_manager());

m_pHwndStringVecMap-&gt;insert(HWND_stringvec_map::value_type(hwnd_des_tages, char_string_vector(myAlloc));
</code></pre>
<p>um dann etwa feuchte träume von map-&gt;find(.. zu bekommen, bekomme ich den originellen fehler:</p>
<pre><code>1&gt;c:\boost_1_47\boost\intrusive\detail\utilities.hpp(234): error C3066: Es gibt verschiedene Möglichkeiten, um ein Objekt dieses Typs mit diesen Argumenten aufzurufen.
1&gt;          Weiterverarbeitung nach vorherigem Fehler nicht möglich; Kompilierung wird abgebrochen.
</code></pre>
<p>Im Grunde hatte ich nicht vor, die ganze Library zu zerlegen um dem Fehler auf die Spur zu kommen.</p>
<p>Ideen?</p>
<p>Praktisch gesehen, lässt sich die Map einfach nicht gebrauchen.</p>
<p>jemand noch ne idee, wie man besser nachvollziehen kann, wir der compiler zu seinen problemen im template-jungel kommt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2197324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2197324</guid><dc:creator><![CDATA[Hobo]]></dc:creator><pubDate>Sat, 31 Mar 2012 14:09:19 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Interprocess, Map on Sat, 31 Mar 2012 15:17:10 GMT]]></title><description><![CDATA[<p>Habs jetzt gelöst, in dem ich eine ungeordnete hash&lt;HWND&gt; map gemacht hab...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2197354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2197354</guid><dc:creator><![CDATA[Hobo]]></dc:creator><pubDate>Sat, 31 Mar 2012 15:17:10 GMT</pubDate></item></channel></rss>