<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" version="2.0">
  <channel>
    <title>Форум 'C/C++' на RSDN.RU</title>
    <link>http://www.rsdn.ru/Forum/cpp/</link>
    <description>Программирование на C++. No VCL, no MFC, pure C++ only.</description>
    <category>cpp</category>
    <language>ru-ru</language>
    <copyright>Copyright ©, RSDN.ru, 2001-2007</copyright>
    <webMaster>webmaster@rsdn.ru</webMaster>
    <generator>RSDN RSS Generator 1.3</generator>
    <image>
      <url>http://www.rsdn.ru/rsdn.gif</url>
      <title>RSDN.RU</title>
      <link>http://www.rsdn.ru</link>
    </image>
    <lastBuildDate>Sat, 31 Jul 2010 05:08:03 GMT</lastBuildDate>
    <ttl>5</ttl>
	<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/rsdn/cpp" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="rsdn/cpp" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>hash_map</title>
		<link>http://www.rsdn.ru/Forum/cpp/3899215.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/3899215.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/3899215.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=3899215</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/3899215.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=3899215</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;всем привет.&lt;br /&gt;
&lt;br /&gt;
расскажите на пальцах как работает hash_map. Уже все облазил .. 2 недели в пустую. проект в VS2008. Как работает хэш-функция (самописная) , точнее как ее подрубать и как происходит созранение элементов в хэш-таблицу. &lt;br /&gt;
Так же если возможно, то как решаются коллизии... Пожалуйста на примерах (не из тупого msdn). заранее спасибо&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/O8kq9ypyppA" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Fri, 30 Jul 2010 06:13:55 GMT</pubDate>
		
			<author>Fox2355 &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>2</slash:comments>
		
	</item>

	<item>
		<title>C++ Coding Standards, Item 9. Don't pessimize prematurely</title>
		<link>http://www.rsdn.ru/Forum/cpp/3899191.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/3899191.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/3899191.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=3899191</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/3899191.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=3899191</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Какие случаи Саттер и Александреску имеют в виду, когда пишут:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class='q'&gt;&lt;p&gt;Item 18 encourages variables that are declared as locally as possible, but includes the exception that it can be sometimes beneficial to hoist a variable out of a loop. Most of the time that won't obfuscate the code's intent at all, and it can actually help clarify what work is done inside the loop and what calculations are loop-invariant.&lt;br /&gt;
&lt;br /&gt;
(Herb Sutter, Andrei Alexandrescu, C++ Coding Standards: 101 Rules, Guidelines, and Best Practices, Item 9. Don't pessimize prematurely)&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/hT00v7GNxHc" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Fri, 30 Jul 2010 05:42:56 GMT</pubDate>
		
			<author>igna &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>12</slash:comments>
		
	</item>

	<item>
		<title>Оператор преобразования vs конструктор преобразования</title>
		<link>http://www.rsdn.ru/Forum/cpp/3898782.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/3898782.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/3898782.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=3898782</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/3898782.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=3898782</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
&lt;span class='kw'&gt;struct&lt;/span&gt; A;
&lt;span class='kw'&gt;struct&lt;/span&gt; B
{
  B(&lt;span class='kw'&gt;const&lt;/span&gt; A&amp;amp;);
  &lt;span class='kw'&gt;operator const&lt;/span&gt; A&amp;amp;();
  &lt;span class='kw'&gt;bool operator&lt;/span&gt;==(&lt;span class='kw'&gt;const&lt;/span&gt; B&amp;amp;) &lt;span class='kw'&gt;const&lt;/span&gt;;
};

A a;
B b;

a == b; &lt;span class='com'&gt;// ****&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
В ******** будет вызван (MSVC2008) оператор преобразования, а затем сравнены объекты А. &lt;br /&gt;
&lt;br /&gt;
Я когда писал, думал будет ошибка компиляции &amp;mdash; ведь можно преобразовать a в b, а потом сравнить B, а можно наоборот.&lt;br /&gt;
&lt;br /&gt;
Подскажите, почему такой код прокатывает?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/gcJkpKcoS38" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Thu, 29 Jul 2010 17:43:44 GMT</pubDate>
		
			<author>enji &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>3</slash:comments>
		
	</item>

	<item>
		<title>Создание и удаление массива виртуальных объектов</title>
		<link>http://www.rsdn.ru/Forum/cpp/3898353.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/3898353.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/3898353.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=3898353</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/3898353.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=3898353</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Никак не могу понять, что в этом коде сделано неверно:&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
&lt;span class='kw'&gt;#include&lt;/span&gt; &amp;lt;iostream&amp;gt;
&lt;span class='kw'&gt;#include&lt;/span&gt; &amp;lt;string&amp;gt;

&lt;span class='kw'&gt;using&lt;/span&gt; std::string;
&lt;span class='kw'&gt;using&lt;/span&gt; std::cout;
&lt;span class='kw'&gt;using&lt;/span&gt; std::endl;

&lt;span class='kw'&gt;class&lt;/span&gt; A
{
    string name;
&lt;span class='kw'&gt;public&lt;/span&gt;:
    A(&lt;span class='kw'&gt;const char&lt;/span&gt; *title):
        name(title)
    {
        cout&amp;lt;&amp;lt;&lt;span class='str'&gt;"A::A for '"&lt;/span&gt;&amp;lt;&amp;lt;name&amp;lt;&amp;lt;&lt;span class='str'&gt;"'"&lt;/span&gt;&amp;lt;&amp;lt;endl;
    }
    ~A()
    {
        cout&amp;lt;&amp;lt;&lt;span class='str'&gt;"A::~A for '"&lt;/span&gt;&amp;lt;&amp;lt;name&amp;lt;&amp;lt;&lt;span class='str'&gt;"'"&lt;/span&gt;&amp;lt;&amp;lt;endl;
    }
};

&lt;span class='kw'&gt;class&lt;/span&gt; B
{
    A ba;
&lt;span class='kw'&gt;public&lt;/span&gt;:
    B():ba(&lt;span class='str'&gt;"b::a"&lt;/span&gt;){}
    &lt;span class='kw'&gt;virtual&lt;/span&gt; ~B(){}
    &lt;span class='kw'&gt;virtual void&lt;/span&gt; f(){}
};

&lt;span class='kw'&gt;class&lt;/span&gt; C : &lt;span class='kw'&gt;public&lt;/span&gt; B
{
    A ca;
&lt;span class='kw'&gt;public&lt;/span&gt;:
    C():ca(&lt;span class='str'&gt;"c::a"&lt;/span&gt;){}
};

&lt;span class='kw'&gt;int&lt;/span&gt; main()
{
    B *ptr = &lt;span class='kw'&gt;new&lt;/span&gt; C[5];
    &lt;span class='kw'&gt;delete&lt;/span&gt;[] ptr;
    &lt;span class='kw'&gt;return&lt;/span&gt; 0;
}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
На винде в MSVC вроде работает, а в GCC на линуксе и маке вижу следующее поведение:&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
A::A &lt;span class='kw'&gt;for&lt;/span&gt; 'b::a'
A::A &lt;span class='kw'&gt;for&lt;/span&gt; 'c::a'
A::A &lt;span class='kw'&gt;for&lt;/span&gt; 'b::a'
A::A &lt;span class='kw'&gt;for&lt;/span&gt; 'c::a'
A::A &lt;span class='kw'&gt;for&lt;/span&gt; 'b::a'
A::A &lt;span class='kw'&gt;for&lt;/span&gt; 'c::a'
A::A &lt;span class='kw'&gt;for&lt;/span&gt; 'b::a'
A::A &lt;span class='kw'&gt;for&lt;/span&gt; 'c::a'
A::A &lt;span class='kw'&gt;for&lt;/span&gt; 'b::a'
A::A &lt;span class='kw'&gt;for&lt;/span&gt; 'c::a'
Segmentation fault&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
Что я делаю не так?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/s7HFEUlo4rE" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Thu, 29 Jul 2010 13:18:49 GMT</pubDate>
		
			<author>Михаил Лёсин &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>9</slash:comments>
		
	</item>

	<item>
		<title>Cохранить capacity очистив контейнер</title>
		<link>http://www.rsdn.ru/Forum/cpp/3896244.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/3896244.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/3896244.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=3896244</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/3896244.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=3896244</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Если v &amp;mdash; std::vector, то неопределено, какое значение вернет capacity после очистки вызовом clear:&lt;br /&gt;
&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
    v.clear();&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
Можно добиться определенного поведения, когда значение capacity гарантированно будет 0, если вместо clear использовать следующую идиому:&lt;br /&gt;
&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
    vector&amp;lt;v_value_type&amp;gt;().swap(v);&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
А можно ли добиться такого определенного поведения, чтобы при очистке значение capacity гарантированно бы не изменилось?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/FLM5-wgu-xE" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Wed, 28 Jul 2010 10:46:34 GMT</pubDate>
		
			<author>igna &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>18</slash:comments>
		
	</item>

	<item>
		<title>Pointer to the member VS bug</title>
		<link>http://www.rsdn.ru/Forum/cpp/3895750.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/3895750.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/3895750.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=3895750</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/3895750.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=3895750</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Проблема:&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
&lt;span class='kw'&gt;template&lt;/span&gt;&amp;lt; &lt;span class='kw'&gt;typename&lt;/span&gt; T, &lt;span class='kw'&gt;int&lt;/span&gt; T::*Field &amp;gt;
&lt;span class='kw'&gt;struct&lt;/span&gt; foo {};

&lt;span class='kw'&gt;struct&lt;/span&gt; test {
    &lt;span class='kw'&gt;int&lt;/span&gt; x;

    &lt;span class='kw'&gt;typedef&lt;/span&gt; foo&amp;lt;test,&amp;amp;test::x&amp;gt; type;
};

&lt;span class='kw'&gt;int&lt;/span&gt; main() {
    test x;
    &lt;span class='kw'&gt;return&lt;/span&gt; 0;
}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Workaround:&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
&lt;span class='kw'&gt;#define&lt;/span&gt; TYPEDEF_MEMBER_PTR(T,NAME,...) &lt;span class='kw'&gt;template&lt;/span&gt;&amp;lt; &lt;span class='kw'&gt;typename&lt;/span&gt; T &amp;gt; &lt;span class='kw'&gt;struct&lt;/span&gt; identity_##__LINE__ { &lt;span class='kw'&gt;typedef&lt;/span&gt; __VA_ARGS__ type; }; &lt;span class='kw'&gt;typedef&lt;/span&gt; identity_##__LINE__&amp;lt;T&amp;gt;::type NAME

TYPEDEF_MEMBER_PTR( test, type, foo&amp;lt;test,&amp;amp;test::x&amp;gt; );&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/tvle1t4ljok" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Wed, 28 Jul 2010 05:10:46 GMT</pubDate>
		
			<author>night beast &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>0</slash:comments>
		
	</item>

	<item>
		<title>void и все остальное: как избежать дублирования?</title>
		<link>http://www.rsdn.ru/Forum/cpp/3895540.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/3895540.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/3895540.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=3895540</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/3895540.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=3895540</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Допустим есть код типа:&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
&lt;span class='kw'&gt;template&lt;/span&gt; &amp;lt;&lt;span class='kw'&gt;typename&lt;/span&gt; TRes&amp;gt; &lt;span class='kw'&gt;struct&lt;/span&gt; Boo {
      &lt;span class='kw'&gt;typedef bool&lt;/span&gt; (*func_type)(&lt;span class='kw'&gt;const&lt;/span&gt; Data&amp;amp;, TRes&amp;amp; res);
        &lt;span class='kw'&gt;bool operator&lt;/span&gt;()(&lt;span class='kw'&gt;const&lt;/span&gt; Data&amp;amp;, TRes&amp;amp; res);
        &lt;span class='com'&gt;//other logic&lt;/span&gt;
};&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
Boo также нужно реализовать для случая, когда TRes=void,&lt;br /&gt;
и func_type вырождается в &lt;br /&gt;
&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
&lt;span class='kw'&gt;bool&lt;/span&gt; (*func_type)(&lt;span class='kw'&gt;const&lt;/span&gt; Data&amp;amp;)&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
дальше в Boo  добавляют функции func_type, а потом &lt;br /&gt;
по некоторым критериям выбирают соотвествующую функцию.&lt;br /&gt;
&lt;br /&gt;
И этот код практически одинаков для Boo&amp;lt;void&amp;gt; и Boo&amp;lt;не void&amp;gt;,&lt;br /&gt;
но приходится  его два раза писать, т.к. компилятор не понимает&lt;br /&gt;
void&amp;amp;, это как-нибудь обходится?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/zI-CudO5b_E" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Tue, 27 Jul 2010 20:11:31 GMT</pubDate>
		
		
			<slash:comments>1</slash:comments>
		
	</item>

	<item>
		<title>PEG парсеры</title>
		<link>http://www.rsdn.ru/Forum/cpp/3895001.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/3895001.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/3895001.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=3895001</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/3895001.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=3895001</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Кто что может сказать по поводу&lt;br /&gt;
1) &lt;a href="http://chilon.net/library.html" class="m" target="_blank"&gt;Chilon&lt;/a&gt;&lt;br /&gt;
2) &lt;a href="http://code.google.com/p/pegtl/" class="m" target="_blank"&gt;pegtl&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
в плане удобности использования/простоты/надежности/скорости etc.&lt;br /&gt;
а также по сравнению с boost::spirit&lt;br /&gt;
&lt;br /&gt;
масштаб &amp;mdash; начиная от сложных конфигурационных файлов до фронтендов&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/d1P-wlChAy0" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Tue, 27 Jul 2010 13:41:48 GMT</pubDate>
		
		
			<slash:comments>26</slash:comments>
		
	</item>

	<item>
		<title>Вопрос по GNU линкеру</title>
		<link>http://www.rsdn.ru/Forum/cpp/3894650.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/3894650.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/3894650.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=3894650</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/3894650.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=3894650</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Возможно я пишу не в ту ветку, но...&lt;br /&gt;
Господа, помогите пожалуйста напиписать скрипт линкера&lt;br /&gt;
&lt;br /&gt;
Я использовал раньше такой скрипт&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
PHDRS
{
    text PT_LOAD;
    data PT_LOAD;
    bss PT_DYNAMIC;
}



SECTIONS
{
    OVERLAY 0x00 :
    {
         .text   {*(.text)}   :text
         .data   {  *(.data) *(.rodata) } :data

    }

     .bss   SIZEOF(.data) (OVERLAY) :  { *(.sbss) *(.bss) *(COMMON) } :bss
}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
теперь нужно добавить перед секцией .data еще одину пустую секцию message размером 0x1000 &lt;br /&gt;
и самое главное &lt;br /&gt;
в секциии .text VMA = 0x00&lt;br /&gt;
          .message  VMA = 0x00&lt;br /&gt;
          .data VMA = 0x1000 &lt;br /&gt;
          .bss VMA = SIZEOF(.data)+ 0x1000&lt;br /&gt;
&lt;br /&gt;
Короче нужно из всех секций сделать два сегмента кода и данных в которых адресация начинается с 0x00&lt;br /&gt;
Подскажите как это можно написать?&lt;br /&gt;
Спасибо.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/EYUTpDdNUoU" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Tue, 27 Jul 2010 10:13:45 GMT</pubDate>
		
			<author>smartmuster &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>3</slash:comments>
		
	</item>

	<item>
		<title>Насколько "вредно" использование singleton?</title>
		<link>http://www.rsdn.ru/Forum/cpp/3892889.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/3892889.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/3892889.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=3892889</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/3892889.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=3892889</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;После того, как узнал про этот паттерн, постоянно хочется его применять &lt;img border='0' width='15' height='15' src='http://www.rsdn.ru/Forum/images/smile.gif' /&gt;. Кажется очень удобным иметь под рукой объект, в любом месте программы. То есть, и код структурируется по классам, и не нужно с передачей ссылок на объекты возиться. Но вот в "настоящих" ООП приложениях практически не встречаю его (обычно синглтоны &amp;mdash; только объекты Application в различных фреймворках). До этого писал на С. Насколько "неправильной" для дизайна больших приложений может быть такая практика?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/NgGFBi2BrTQ" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Mon, 26 Jul 2010 10:10:08 GMT</pubDate>
		
		
			<slash:comments>67</slash:comments>
		
	</item>

	<item>
		<title>Шаблонная функция для нескольких типов</title>
		<link>http://www.rsdn.ru/Forum/cpp/3892813.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/3892813.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/3892813.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=3892813</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/3892813.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=3892813</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Можно ли определить &lt;i&gt;одну&lt;/i&gt; шаблонную функцию так, чтобы она принимала только несколько &lt;i&gt;строго определенных, известных заранее&lt;/i&gt; классов, или для каждого класса нужно писать отдельную шаблонную функцию? Для всех остальных случаев, не специфицированных явно, планируется иметь обработчик по умолчанию, кидающий исключение "Not implemented". Писать несколько одинаковых функций не хочется. Как быть?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/9mVu6JpVkRE" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Mon, 26 Jul 2010 08:45:42 GMT</pubDate>
		
		
			<slash:comments>9</slash:comments>
		
	</item>

	<item>
		<title>используемые классом возможности</title>
		<link>http://www.rsdn.ru/Forum/cpp/3892608.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/3892608.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/3892608.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=3892608</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/3892608.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=3892608</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Есть несколько возможных поток данных для программы.&lt;br /&gt;
И этих потоков данных может быть несколько одновременно.&lt;br /&gt;
Пусть базовый класс для работы с ними IInputDecoder.&lt;br /&gt;
&lt;br /&gt;
Есть базовый класс, который работает с данными поставляемыми &lt;br /&gt;
одной из реализаций IInputDecoder. Назовем его IInputHandler.&lt;br /&gt;
Для абстрагирования от конкретных полей, форматов и т.д.,&lt;br /&gt;
есть набор фильтров, который реализует каждый наследник IInputDecoder.&lt;br /&gt;
Что-то типа &lt;br /&gt;
&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
&lt;span class='kw'&gt;struct&lt;/span&gt; IFilter {
  &lt;span class='kw'&gt;virtual&lt;/span&gt; ~IFilter() {}
};
&lt;span class='kw'&gt;struct&lt;/span&gt; ExtractFieldFoo : &lt;span class='kw'&gt;public&lt;/span&gt; std::unary_function&amp;lt;&lt;span class='kw'&gt;double&lt;/span&gt;, IInputDecoder&amp;gt;, &lt;span class='kw'&gt;public&lt;/span&gt; IFilter { ... };&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
Хочется в зависимости от того, какие фильтры использует IInputHandler выбирать&lt;br /&gt;
какой из нескольких IInputDecoder будет давать ему данные.&lt;br /&gt;
&lt;br /&gt;
Т.е. синтаксис вроде&lt;br /&gt;
&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
&lt;span class='kw'&gt;struct&lt;/span&gt; IInputFiler {
  &lt;span class='kw'&gt;virtual&lt;/span&gt; ~IInputFilter () {}
  &lt;span class='kw'&gt;virtual&lt;/span&gt; is_filter_used(IFilter *) = 0;
  &lt;span class='kw'&gt;virtual void&lt;/span&gt; run() = 0;
};

&lt;span class='kw'&gt;struct&lt;/span&gt; SomeHandler : &lt;span class='kw'&gt;public&lt;/span&gt; IIinputHandler {
  USING_FILTER(ExtractFieldFoo);
  USING_FILTER(ExtractFieldBoo);
  &lt;span class='kw'&gt;void&lt;/span&gt; run() { 
    &lt;span class='com'&gt;//some code&lt;/span&gt;
  }
};&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
 &lt;br /&gt;
В результате использования USING_FILTER у SomeHandler должен&lt;br /&gt;
а)автоматически возникнуть is_filter_used, который вернет true только &lt;br /&gt;
для двух реализаций фильтров&lt;br /&gt;
б)в методе run появится возможность использовать эти фильтры&lt;br /&gt;
&lt;br /&gt;
Есть идея как это реализовать объявив SomeHandler в header файле,&lt;br /&gt;
и включив его два раза, меняя "#define" перед "#include", но нет ли метода попроще?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/UDymm2Byx74" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Mon, 26 Jul 2010 05:17:23 GMT</pubDate>
		
		
			<slash:comments>0</slash:comments>
		
	</item>

	<item>
		<title>Избежать копирования при инициализации объекта</title>
		<link>http://www.rsdn.ru/Forum/cpp/3891981.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/3891981.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/3891981.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=3891981</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/3891981.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=3891981</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Здравствуйте. Вопрос полного чайника, но хочется оптимизации.&lt;br /&gt;
Как избежать копирования при инициализации объекта класса string?&lt;br /&gt;
Имеется буфер с длинной строкой, если эту строку присвоить объекту string, то он создаст под нее свой буфер и скопирует туда строку. Там же и будут производиться дальнейшие манипуляции. Можно ли как-то присвоить уже имеющийся буфер этому объекту?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/EuYGkmm-fFI" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Sun, 25 Jul 2010 05:58:02 GMT</pubDate>
		
		
			<slash:comments>32</slash:comments>
		
	</item>

	<item>
		<title>Не шаблонные классы с шаблонными функциями</title>
		<link>http://www.rsdn.ru/Forum/cpp/3891579.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/3891579.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/3891579.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=3891579</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/3891579.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=3891579</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Итак, есть 2 нешаблонных класса с шаблонными функциями, которые возвращают друг друга&lt;br /&gt;
&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;

&lt;span class='com'&gt;//header1&lt;/span&gt;
&lt;span class='kw'&gt;class&lt;/span&gt; A
{
    B GetB();
    &lt;span class='kw'&gt;template&lt;/span&gt;&amp;lt;&lt;span class='kw'&gt;typename&lt;/span&gt; T&amp;gt;
    B GetB(&lt;span class='kw'&gt;const&lt;/span&gt; T&amp;amp; t);
}

&lt;span class='com'&gt;//header2&lt;/span&gt;
&lt;span class='kw'&gt;class&lt;/span&gt; B
{
    A GetA();
    &lt;span class='kw'&gt;template&lt;/span&gt;&amp;lt;&lt;span class='kw'&gt;typename&lt;/span&gt; T&amp;gt;
    A GetA(&lt;span class='kw'&gt;const&lt;/span&gt; T&amp;amp; t);
}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
forward declaration для таких случаев не работает и если описать тело шаблонных функций в классе то выдает ошибку компиляции "use undefined class". Ну а если перенести тела функции в cpp файл, то, понятно, ошибка линковки возникает при использовании шаблонной функции.&lt;br /&gt;
Как подружить эти 2 класса чтобы и компилятор не ругался и линковщик слинковал?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/1D7c3R_dchA" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Sat, 24 Jul 2010 12:15:54 GMT</pubDate>
		
			<author>szag &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>6</slash:comments>
		
	</item>

	<item>
		<title>конструктор копирования</title>
		<link>http://www.rsdn.ru/Forum/cpp/3891268.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/3891268.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/3891268.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=3891268</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/3891268.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=3891268</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Здравствуйте, имеется следующий код&lt;br /&gt;
&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
&lt;span class='kw'&gt;#include&lt;/span&gt; &amp;lt;iostream&amp;gt;
&lt;span class='kw'&gt;#include&lt;/span&gt; &amp;lt;string&amp;gt;

&lt;span class='kw'&gt;using namespace&lt;/span&gt; std;


&lt;span class='kw'&gt;class&lt;/span&gt; Test
{
    &lt;span class='kw'&gt;public&lt;/span&gt;:
        Test(string theName) : name(theName)
        {
            cout &amp;lt;&amp;lt; &lt;span class='str'&gt;"Constructor "&lt;/span&gt; &amp;lt;&amp;lt; name &amp;lt;&amp;lt; endl;
        }

        Test(&lt;span class='kw'&gt;const&lt;/span&gt; Test &amp;amp;obj)
        {
            name = obj.name;
            cout &amp;lt;&amp;lt; &lt;span class='str'&gt;"Copy constructor "&lt;/span&gt; &amp;lt;&amp;lt; name &amp;lt;&amp;lt; endl;
        }

        ~Test()
        {
            cout &amp;lt;&amp;lt; &lt;span class='str'&gt;"Destructor "&lt;/span&gt; &amp;lt;&amp;lt; name &amp;lt;&amp;lt; endl;
        }

        Test&amp;amp; &lt;span class='kw'&gt;operator&lt;/span&gt; =(&lt;span class='kw'&gt;const&lt;/span&gt; Test &amp;amp;obj)
        {
            cout &amp;lt;&amp;lt; &lt;span class='str'&gt;"Operator = "&lt;/span&gt; &amp;lt;&amp;lt; name &amp;lt;&amp;lt; endl;
            &lt;span class='kw'&gt;return&lt;/span&gt; *&lt;span class='kw'&gt;this&lt;/span&gt;;
        }

        &lt;span class='kw'&gt;void&lt;/span&gt; show()
        {
            cout &amp;lt;&amp;lt; &lt;span class='str'&gt;"name : "&lt;/span&gt; &amp;lt;&amp;lt; name &amp;lt;&amp;lt; endl;
        }

    &lt;span class='kw'&gt;private&lt;/span&gt;:
        string name;
};


Test func()
{
    Test obj(&lt;span class='str'&gt;"test func"&lt;/span&gt;);

    &lt;span class='kw'&gt;return&lt;/span&gt; obj;
}


&lt;span class='kw'&gt;int&lt;/span&gt; main()
{
    Test one = func();

    one.show();

    &lt;span class='kw'&gt;return&lt;/span&gt; 0;
}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
В момент создания объекта one происходит вызов функции, в которой создается объект. Собственно в чем заключается вопрос, конструктор вызывается только для локального объекта в функции func(). но для объекта one конструктор копирования не вызывается,почему ? Вроде бы это называется "оптимизацией возвращаемого значения", но все равно до конца непонятно что именно происходит при создании объекта в главной функции main().&lt;br /&gt;
&lt;br /&gt;
P.S На днях глядел книжку Брюса Эккеля, там был совет, если из функции возвращается объект по значению то лучше делать следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
&lt;span class='kw'&gt;return&lt;/span&gt; someObjec(lhs, rhs);&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
вместо того чтобы создавать объект и возвращать его как я сделал в примере выше. Вроде как это экономит ресурсы, т.к не используется конструктор копирования и деструктор.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/v-t5oxi-eoM" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Sat, 24 Jul 2010 03:00:13 GMT</pubDate>
		
			<author>Hellhang &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>1</slash:comments>
		
	</item>

	<item>
		<title>Указатели на функции классов</title>
		<link>http://www.rsdn.ru/Forum/cpp/3890646.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/3890646.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/3890646.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=3890646</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/3890646.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=3890646</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Есть класс &lt;br /&gt;
&lt;br /&gt;
class A {&lt;br /&gt;
public:&lt;br /&gt;
    A() {};&lt;br /&gt;
    &lt;br /&gt;
private:&lt;br /&gt;
    void func1( int ) {};&lt;br /&gt;
    void func2( int) {};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Хочу добавить в него указатель на функцию, который будет устанавливаться в конструкторе и при вызове обращаться либо к func1 либо к func2&lt;br /&gt;
&lt;br /&gt;
То есть чтобы можно было из любой процедуры класса вызывать этот указатель (который является членом класса) а сам указатель устанавливать в конструкторе на соответствующую функцию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Как это можно сделать?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/9-8-Ndmn_6w" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Fri, 23 Jul 2010 14:54:36 GMT</pubDate>
		
			<author>Mattias &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>4</slash:comments>
		
	</item>

	<item>
		<title>Pattern InstancePool</title>
		<link>http://www.rsdn.ru/Forum/cpp/3889222.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/3889222.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/3889222.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=3889222</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/3889222.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=3889222</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Хочу предложить вашему внимание паттерн проектирования InstanceManager;&lt;br /&gt;
Данный класс позволяет использовать только один экземпляр любого класса в программе не прибегая к помощи синглтонов:&lt;br /&gt;
&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
&lt;span class='com'&gt;//////////////////////////////////////////////////////////////////////////
// Therading model class example&lt;/span&gt;
&lt;span class='kw'&gt;struct&lt;/span&gt; SingleThread
{
  &lt;span class='kw'&gt;void&lt;/span&gt; Lock() {}
  &lt;span class='kw'&gt;void&lt;/span&gt; Unlock() {}
};

&lt;span class='kw'&gt;template&lt;/span&gt; &amp;lt;&lt;span class='kw'&gt;class&lt;/span&gt; T&amp;gt;
&lt;span class='kw'&gt;struct&lt;/span&gt; MutexLocker
{
  MutexLocker(T&amp;amp; m) : MyMutex(&amp;amp;m) { MyMutex-&amp;gt;Lock(); };
  ~MutexLocker() { MyMutex-&amp;gt;Unlock(); }
&lt;span class='kw'&gt;private&lt;/span&gt;:
  T* MyMutex;
};
&lt;span class='com'&gt;//////////////////////////////////////////////////////////////////////////
/// class Instance pool&lt;/span&gt;

&lt;span class='kw'&gt;template&lt;/span&gt;&amp;lt;&lt;span class='kw'&gt;class&lt;/span&gt; ThreadingModel = SingleThread&amp;gt;
&lt;span class='kw'&gt;class&lt;/span&gt; InstanceManager
{
  &lt;span class='kw'&gt;class&lt;/span&gt; InstanceBase
  {
  &lt;span class='kw'&gt;public&lt;/span&gt;:
    &lt;span class='kw'&gt;virtual&lt;/span&gt; ~InstanceBase() {}
  };

  &lt;span class='kw'&gt;template&lt;/span&gt; &amp;lt;&lt;span class='kw'&gt;class&lt;/span&gt; T&amp;gt;
  &lt;span class='kw'&gt;class&lt;/span&gt; Instance : &lt;span class='kw'&gt;public&lt;/span&gt; T, &lt;span class='kw'&gt;public&lt;/span&gt; InstanceBase
  {
  };
&lt;span class='kw'&gt;public&lt;/span&gt;:
  ~InstanceManager()
  {
    &lt;span class='kw'&gt;while&lt;/span&gt; (!ObjectPool.empty())
    {
      &lt;span class='kw'&gt;delete&lt;/span&gt; ObjectPool.begin()-&amp;gt;second;
      ObjectPool.erase(ObjectPool.begin());
    }
  }
  &lt;span class='kw'&gt;template&lt;/span&gt; &amp;lt;&lt;span class='kw'&gt;class&lt;/span&gt; T&amp;gt;
  T* GetInstance(&lt;span class='kw'&gt;const&lt;/span&gt; T* t = 0)
  {
    &lt;span class='kw'&gt;const&lt;/span&gt; Loki::TypeInfo id(&lt;span class='kw'&gt;typeid&lt;/span&gt;(t));
    ObjectPoolMap::iterator o = ObjectPool.find(id);
    &lt;span class='kw'&gt;if&lt;/span&gt; (o == ObjectPool.end())
    {
      MutexLocker&amp;lt;ThreadingModel&amp;gt; locker(InsertMutex);
      o = ObjectPool.find(id);
      &lt;span class='kw'&gt;if&lt;/span&gt; (o == ObjectPool.end())
      {
        o = ObjectPool.insert(ObjectPoolMap::value_type(id, &lt;span class='kw'&gt;new&lt;/span&gt; Instance&amp;lt;T&amp;gt;())).first;
      }
    }
    &lt;span class='kw'&gt;return static_cast&lt;/span&gt;&amp;lt;T*&amp;gt;(&lt;span class='kw'&gt;static_cast&lt;/span&gt;&amp;lt;Instance&amp;lt;T&amp;gt;* &amp;gt;(o-&amp;gt;second));
  }
&lt;span class='kw'&gt;private&lt;/span&gt;:
  ThreadingModel InsertMutex;
  &lt;span class='kw'&gt;typedef&lt;/span&gt; std::map&amp;lt;Loki::TypeInfo, InstanceBase*&amp;gt; ObjectPoolMap;
  ObjectPoolMap ObjectPool;
};&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
пример использования:&lt;br /&gt;
&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
&lt;span class='kw'&gt;class&lt;/span&gt; TestClass
{
&lt;span class='kw'&gt;public&lt;/span&gt;:
  TestClass() { std::cout&amp;lt;&amp;lt; &lt;span class='str'&gt;"TestClass"&lt;/span&gt; &amp;lt;&amp;lt; std::endl;  }
  &lt;span class='kw'&gt;virtual&lt;/span&gt; ~TestClass() { std::cout&amp;lt;&amp;lt; &lt;span class='str'&gt;"~TestClass"&lt;/span&gt; &amp;lt;&amp;lt; std::endl;  }
  &lt;span class='kw'&gt;void&lt;/span&gt; Print() { std::cout&amp;lt;&amp;lt; &lt;span class='str'&gt;"TestClass::Print"&lt;/span&gt; &amp;lt;&amp;lt; std::endl;  }
};

&lt;span class='kw'&gt;class&lt;/span&gt; TestClass2
{
&lt;span class='kw'&gt;public&lt;/span&gt;:
  TestClass2() { std::cout&amp;lt;&amp;lt; &lt;span class='str'&gt;"TestClass2"&lt;/span&gt; &amp;lt;&amp;lt; std::endl;  }
  &lt;span class='kw'&gt;virtual&lt;/span&gt; ~TestClass2() { std::cout&amp;lt;&amp;lt; &lt;span class='str'&gt;"~TestClass2"&lt;/span&gt; &amp;lt;&amp;lt; std::endl;  }
  &lt;span class='kw'&gt;void&lt;/span&gt; Print() { std::cout&amp;lt;&amp;lt; &lt;span class='str'&gt;"TestClass2::Print"&lt;/span&gt; &amp;lt;&amp;lt; std::endl;  }
};

&lt;span class='kw'&gt;void&lt;/span&gt; TestProgramm()
{
  InstanceManager&amp;lt;SingleThreading&amp;gt; manager;
  manager.GetInstance&amp;lt;TestClass&amp;gt;()-&amp;gt;Print();
  manager.GetInstance&amp;lt;TestClass2&amp;gt;()-&amp;gt;Print();
  manager.GetInstance&amp;lt;TestClass&amp;gt;()-&amp;gt;Print();
  manager.GetInstance&amp;lt;TestClass2&amp;gt;()-&amp;gt;Print();
  &lt;span class='kw'&gt;return&lt;/span&gt; 0;
}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;br /&gt;
класс &lt;b&gt;TypeInfo&lt;/b&gt;, код взят из библиотеки &lt;a href="http://loki-lib.sourceforge.net/" class="m" target="_blank"&gt;Loki&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
&lt;span class='kw'&gt;namespace&lt;/span&gt; Loki
{
  &lt;span class='kw'&gt;class&lt;/span&gt; TypeInfo
  {
  &lt;span class='kw'&gt;public&lt;/span&gt;:
    &lt;span class='com'&gt;// Constructors&lt;/span&gt;
    TypeInfo(); &lt;span class='com'&gt;// needed for containers&lt;/span&gt;
    TypeInfo(&lt;span class='kw'&gt;const&lt;/span&gt; std::&lt;span class='kw'&gt;type_info&lt;/span&gt;&amp;amp;); &lt;span class='com'&gt;// non-explicit

    // Access for the wrapped std::type_info&lt;/span&gt;
    &lt;span class='kw'&gt;const&lt;/span&gt; std::&lt;span class='kw'&gt;type_info&lt;/span&gt;&amp;amp; Get() &lt;span class='kw'&gt;const&lt;/span&gt;;
    &lt;span class='com'&gt;// Compatibility functions&lt;/span&gt;
    &lt;span class='kw'&gt;bool&lt;/span&gt; before(&lt;span class='kw'&gt;const&lt;/span&gt; TypeInfo&amp;amp; rhs) &lt;span class='kw'&gt;const&lt;/span&gt;;
    &lt;span class='kw'&gt;const char&lt;/span&gt;* name() &lt;span class='kw'&gt;const&lt;/span&gt;;

  &lt;span class='kw'&gt;private&lt;/span&gt;:
    &lt;span class='kw'&gt;const&lt;/span&gt; std::&lt;span class='kw'&gt;type_info&lt;/span&gt;* pInfo_;
  };

  &lt;span class='com'&gt;// Implementation&lt;/span&gt;

  &lt;span class='kw'&gt;inline&lt;/span&gt; TypeInfo::TypeInfo()
  {
    &lt;span class='kw'&gt;class&lt;/span&gt; Nil {};
    pInfo_ = &amp;amp;&lt;span class='kw'&gt;typeid&lt;/span&gt;(Nil);
    assert(pInfo_);
  }

  &lt;span class='kw'&gt;inline&lt;/span&gt; TypeInfo::TypeInfo(&lt;span class='kw'&gt;const&lt;/span&gt; std::&lt;span class='kw'&gt;type_info&lt;/span&gt;&amp;amp; ti)
  : pInfo_(&amp;amp;ti)
  { assert(pInfo_); }

  &lt;span class='kw'&gt;inline bool&lt;/span&gt; TypeInfo::before(&lt;span class='kw'&gt;const&lt;/span&gt; TypeInfo&amp;amp; rhs) &lt;span class='kw'&gt;const&lt;/span&gt;
  {
    assert(pInfo_);
    &lt;span class='com'&gt;// type_info::before return type is int in some VC libraries &lt;/span&gt;
    &lt;span class='kw'&gt;return&lt;/span&gt; pInfo_-&amp;gt;before(*rhs.pInfo_) != 0;
  }

  &lt;span class='kw'&gt;inline const&lt;/span&gt; std::&lt;span class='kw'&gt;type_info&lt;/span&gt;&amp;amp; TypeInfo::Get() &lt;span class='kw'&gt;const&lt;/span&gt;
  {
    assert(pInfo_);
    &lt;span class='kw'&gt;return&lt;/span&gt; *pInfo_;
  }

  &lt;span class='kw'&gt;inline const char&lt;/span&gt;* TypeInfo::name() &lt;span class='kw'&gt;const&lt;/span&gt;
  {
    assert(pInfo_);
    &lt;span class='kw'&gt;return&lt;/span&gt; pInfo_-&amp;gt;name();
  }

  &lt;span class='com'&gt;// Comparison operators&lt;/span&gt;

  &lt;span class='kw'&gt;inline bool operator&lt;/span&gt;==(&lt;span class='kw'&gt;const&lt;/span&gt; TypeInfo&amp;amp; lhs, &lt;span class='kw'&gt;const&lt;/span&gt; TypeInfo&amp;amp; rhs)
  &lt;span class='com'&gt;// type_info::operator== return type is int in some VC libraries&lt;/span&gt;
  { &lt;span class='kw'&gt;return&lt;/span&gt; (lhs.Get() == rhs.Get()) != 0; }

  &lt;span class='kw'&gt;inline bool operator&lt;/span&gt;&amp;lt;(&lt;span class='kw'&gt;const&lt;/span&gt; TypeInfo&amp;amp; lhs, &lt;span class='kw'&gt;const&lt;/span&gt; TypeInfo&amp;amp; rhs)
  { &lt;span class='kw'&gt;return&lt;/span&gt; lhs.before(rhs); }

  &lt;span class='kw'&gt;inline bool operator&lt;/span&gt;!=(&lt;span class='kw'&gt;const&lt;/span&gt; TypeInfo&amp;amp; lhs, &lt;span class='kw'&gt;const&lt;/span&gt; TypeInfo&amp;amp; rhs)
  { &lt;span class='kw'&gt;return&lt;/span&gt; !(lhs == rhs); }    

  &lt;span class='kw'&gt;inline bool operator&lt;/span&gt;&amp;gt;(&lt;span class='kw'&gt;const&lt;/span&gt; TypeInfo&amp;amp; lhs, &lt;span class='kw'&gt;const&lt;/span&gt; TypeInfo&amp;amp; rhs)
  { &lt;span class='kw'&gt;return&lt;/span&gt; rhs &amp;lt; lhs; }

  &lt;span class='kw'&gt;inline bool operator&lt;/span&gt;&amp;lt;=(&lt;span class='kw'&gt;const&lt;/span&gt; TypeInfo&amp;amp; lhs, &lt;span class='kw'&gt;const&lt;/span&gt; TypeInfo&amp;amp; rhs)
  { &lt;span class='kw'&gt;return&lt;/span&gt; !(lhs &amp;gt; rhs); }

  &lt;span class='kw'&gt;inline bool operator&lt;/span&gt;&amp;gt;=(&lt;span class='kw'&gt;const&lt;/span&gt; TypeInfo&amp;amp; lhs, &lt;span class='kw'&gt;const&lt;/span&gt; TypeInfo&amp;amp; rhs)
  { &lt;span class='kw'&gt;return&lt;/span&gt; !(lhs &amp;lt; rhs); }
}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/0RmeQur8ydg" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Thu, 22 Jul 2010 18:36:25 GMT</pubDate>
		
			<author>BULAT GAIFULLIN &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>10</slash:comments>
		
	</item>

	<item>
		<title>Правильное ли поведение компилятора?</title>
		<link>http://www.rsdn.ru/Forum/cpp/3889038.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/3889038.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/3889038.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=3889038</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/3889038.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=3889038</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Компилятор от Visual Studio 2010&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
std::ostream&amp;amp; myFunction(std::ostream&amp;amp; lArg, &lt;span class='kw'&gt;volatile const char&lt;/span&gt;* rArg) 
{ 
    &lt;span class='kw'&gt;return&lt;/span&gt; lArg &amp;lt;&amp;lt; rArg; &lt;span class='com'&gt;//warning C4800: 'volatile const char *' : forcing value to bool 'true' or 'false' (performance warning)&lt;/span&gt;
}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
Почему так происходит?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/ZdWpvckzX_I" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Thu, 22 Jul 2010 16:13:32 GMT</pubDate>
		
			<author>Aleх &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>8</slash:comments>
		
	</item>

	<item>
		<title>error: Stack around the variable 'prbs' was corrupted</title>
		<link>http://www.rsdn.ru/Forum/cpp/3889016.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/3889016.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/3889016.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=3889016</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/3889016.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=3889016</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;не пойму, в чем ошибка. подскажите как исправить?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class='q'&gt;&lt;p&gt;Run-Time Check Failure #2 &amp;mdash; Stack around the variable 'prbs' was corrupted.&lt;/p&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
&lt;span class='kw'&gt;#include&lt;/span&gt; &amp;lt;iostream&amp;gt;

&lt;span class='kw'&gt;using namespace&lt;/span&gt; std;

&lt;span class='kw'&gt;void&lt;/span&gt; shift(&lt;span class='kw'&gt;int&lt;/span&gt; *a, &lt;span class='kw'&gt;int&lt;/span&gt; new_val)
{
     &lt;span class='kw'&gt;for&lt;/span&gt; (&lt;span class='kw'&gt;int&lt;/span&gt; i=3; i&amp;gt;0; i--)
     {
         a[i] = a[i-1];
     }
     a[0]=new_val;
}


&lt;span class='kw'&gt;int&lt;/span&gt; main(&lt;span class='kw'&gt;int&lt;/span&gt; argc, &lt;span class='kw'&gt;char&lt;/span&gt; *argv[])
{


     &lt;span class='kw'&gt;int&lt;/span&gt; prbs[3] = {1,1,1};

     &lt;span class='kw'&gt;int&lt;/span&gt; tap;

     &lt;span class='kw'&gt;for&lt;/span&gt; (&lt;span class='kw'&gt;int&lt;/span&gt; i=0; i&amp;lt;16;i++)
     {
         tap = prbs[0] ^ prbs[2];
         shift(prbs,tap);
         printf(&lt;span class='str'&gt;"%d"&lt;/span&gt;,tap);
     }



     system(&lt;span class='str'&gt;"pause"&lt;/span&gt;);
     &lt;span class='kw'&gt;return&lt;/span&gt; 0;
}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/lEQKPcLPmj4" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Thu, 22 Jul 2010 15:58:18 GMT</pubDate>
		
			<author>i.dmitry &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>2</slash:comments>
		
	</item>

	<item>
		<title>Вопрос для знатоков stl: разбить контейнер на части</title>
		<link>http://www.rsdn.ru/Forum/cpp/3888902.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/3888902.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/3888902.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=3888902</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/3888902.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=3888902</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Допустим есть контейнер std::vector&amp;lt;T&amp;gt; m_vec; (лист или вектор не важно)&lt;br /&gt;
В нём к примеру 100 элементов.&lt;br /&gt;
Как быстро, за минимальное количество строк разбить этот контейнер на n контейнеров, которые будут содержать по maximum m элементов.&lt;br /&gt;
Допустим если там 100 элементов, и нужно разбить на контейнеры по 30, то на выходе должно быть четыре контейнера &lt;br /&gt;
std::vector&amp;lt; std::vector&amp;lt;T&amp;gt; &amp;gt; [0].size() = 30&lt;br /&gt;
std::vector&amp;lt; std::vector&amp;lt;T&amp;gt; &amp;gt; [1].size() = 30&lt;br /&gt;
std::vector&amp;lt; std::vector&amp;lt;T&amp;gt; &amp;gt; [2].size() = 30&lt;br /&gt;
std::vector&amp;lt; std::vector&amp;lt;T&amp;gt; &amp;gt; [3].size() = 10&lt;br /&gt;
&lt;br /&gt;
лист или вектор не принципиально&lt;br /&gt;
только не спрашивайте зачем &lt;img border='0' width='15' height='15' src='http://www.rsdn.ru/Forum/images/lol.gif' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/sOVA9m3DW-o" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Thu, 22 Jul 2010 14:27:36 GMT</pubDate>
		
			<author>1234 &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>7</slash:comments>
		
	</item>
</channel>
</rss>
