<?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>Sun, 12 Feb 2012 19:52:12 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>Оптимизация кода на C</title>
		<link>http://www.rsdn.ru/Forum/cpp/4614498.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/4614498.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/4614498.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4614498</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4614498.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4614498</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Нашёл тут в интернете след. статью:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://itw66.ru/blog/c_plus_plus/13.html" class="m" target="_blank"&gt;http://itw66.ru/blog/c_plus_plus/13.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Интересует, прежде всего, вот что &amp;mdash; какие из описанных в ней приёмов по оптимизации кода на C действительно имеют место быть в реальной программе?&lt;br /&gt;
&lt;br /&gt;
Я имею ввиду то, что не сделают ли за меня умные оптимизации современных компиляторов абсолютно то же самое?&lt;br /&gt;
&lt;br /&gt;
Вот только не надо заводить очередные споры на тему "такие оптимизации никому давно не нужны, прирост в производительности в данном выражении будет минимален, надо искать другие места / делать другие оптимизации".&lt;br /&gt;
&lt;br /&gt;
Что вообще можете кинуть почитать про оптимизацию на C / C++?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/H4aM4rQLRfE" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Sun, 12 Feb 2012 15:47:39 GMT</pubDate>
		
		
			<slash:comments>4</slash:comments>
		
	</item>

	<item>
		<title>VC codegen</title>
		<link>http://www.rsdn.ru/Forum/cpp/4614116.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/4614116.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/4614116.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4614116</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4614116.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4614116</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;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;int&lt;/span&gt; size&amp;gt;
&lt;span class='kw'&gt;struct&lt;/span&gt; retbuf
{
    &lt;span class='kw'&gt;char&lt;/span&gt; __[size];
};&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;
retbuf&amp;lt;size&amp;gt;();&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
то генерируется команда stos обнуляющая массив &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;template&lt;/span&gt;&amp;lt;&lt;span class='kw'&gt;int&lt;/span&gt; size&amp;gt;
&lt;span class='kw'&gt;struct&lt;/span&gt; retbuf
{
    ~retbuf(){}
    &lt;span class='kw'&gt;char&lt;/span&gt; __[size];
};&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;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;char&lt;/span&gt;(&amp;amp; &lt;span class='kw'&gt;__stdcall&lt;/span&gt; func( retbuf&amp;lt;7&amp;gt; &amp;amp;gh , other args))[7]
{
    ...processing...
    &lt;span class='kw'&gt;return&lt;/span&gt; gh.__;
}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
(естественно константа 7 выводится через шаблон просто упростил)&lt;br /&gt;
&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
need_me_text( func( retbuf&amp;lt;7&amp;gt;() ) )&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;
00401027 8D 45 F9         lea         eax,[ebp-7] 
0040102A 50               push        eax  
00401030 E8 4B 00 00 00   call        func (401080h)&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&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;
00401026 33 C0            xor         eax,eax 
00401028 8D 7D F9         lea         edi,[ebp-7] 
0040102B AB               stos        dword ptr es:[edi] 
0040102C 66 AB            stos        word ptr es:[edi] 
0040102E AA               stos        byte ptr es:[edi] 
00401031 8D 45 F9         lea         eax,[ebp-7] 
00401034 50               push        eax  
0040103A E8 63 00 00 00   call        func (4010A2h)&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;
004114BF 8D 45 F9         lea         eax,[ebp-7]
004114D8 51               push        eax  
004114DE E8 A8 FC FF FF   call        func (41118Bh) 
004114FD 8D 45 F9         lea         eax,[ebp-7]
00411503 E8 1A FC FF FF   call        retbuf&amp;lt;7&amp;gt;::~retbuf&amp;lt;7&amp;gt;&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;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt; 
00401027 8D 45 F9         lea         eax,[ebp-7] 
0040102A 50               push        eax  
00401030 E8 4B 00 00 00   call        func (401080h)&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;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
00401027 8D 45 F9         lea         eax,[ebp-7] 
0040102A 50               push        eax  
00401030 E8 4B 00 00 00   call        func (401080h)&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;br /&gt;
вызова пустого деструктора надо что то такое что гарантирует &lt;br /&gt;
что зануления не будет типа как деструктор но не деструктор &lt;br /&gt;
чтобы не генерировал лишний код &lt;br /&gt;
&lt;br /&gt;
решение нужно для cl.exe версии 15.0 (VS 2008)&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;
need_me_text( func( &lt;span class='kw'&gt;struct&lt;/span&gt;&amp;lt;size&amp;gt;() ) )&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
вот func должна вернуть ссылку на массив живущий до конца вызова &lt;br /&gt;
need_me_text дело в том что func записывает некие данные в этот массив &lt;br /&gt;
и передает их в функцию need_me_text выделить внутри func я не могу &lt;br /&gt;
значит надо внешне но предвидя контекст использования &lt;br /&gt;
(выделить надо на стеке и сделать невалидной после конца выражения &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/zuFOzE2B6q4" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Sun, 12 Feb 2012 08:23:31 GMT</pubDate>
		
			<author>jyuyjiyuijyu &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>5</slash:comments>
		
	</item>

	<item>
		<title>Строки в C</title>
		<link>http://www.rsdn.ru/Forum/cpp/4612829.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/4612829.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/4612829.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4612829</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4612829.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4612829</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Приветствую.&lt;br /&gt;
&lt;br /&gt;
Зачем может понадобиться не выделять память под нулевой символ в C-строке?&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;char&lt;/span&gt; s[] = &lt;span class='str'&gt;"abc"&lt;/span&gt;, t[3] = &lt;span class='str'&gt;"abc"&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/b39__Jir42U" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Fri, 10 Feb 2012 17:46:43 GMT</pubDate>
		
		
			<slash:comments>7</slash:comments>
		
	</item>

	<item>
		<title>вызов шаблонной функции класса</title>
		<link>http://www.rsdn.ru/Forum/cpp/4612563.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/4612563.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/4612563.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4612563</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4612563.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4612563</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;
t.f&amp;lt;42&amp;gt;();&lt;br /&gt;
надо писать&lt;br /&gt;
t.template f&amp;lt;42&amp;gt;();&lt;br /&gt;
где t &amp;mdash; какой-нить класс с шаблонной функцией f.&lt;br /&gt;
(студия понимает оба варианта) &lt;br /&gt;
&lt;br /&gt;
зачем нужен такой синтаксис c ключевым словом template?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/YdKYpgASNPg" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Fri, 10 Feb 2012 14:32:57 GMT</pubDate>
		
		
			<slash:comments>2</slash:comments>
		
	</item>

	<item>
		<title>Группы исключений - как лучше сделать?</title>
		<link>http://www.rsdn.ru/Forum/cpp/4612206.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/4612206.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/4612206.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4612206</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4612206.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4612206</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Прювет.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Цель&lt;/b&gt;&lt;br /&gt;
Ъ-использование исключений.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Задача&lt;/b&gt;&lt;br /&gt;
Реализовать группы исключений.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Требования&lt;/b&gt;&lt;br /&gt;
1. Поддержка внешнего связывания&lt;br /&gt;
2. Использование только стандартных средств&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Реализация&lt;/b&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; my_exception : &lt;span class='kw'&gt;public&lt;/span&gt; std::exception
{
&lt;span class='kw'&gt;public&lt;/span&gt;:
    my_exception() : _Msg(&lt;span class='str'&gt;"Unknown exception"&lt;/span&gt;)
    {
    }

    my_exception(&lt;span class='kw'&gt;const&lt;/span&gt; std::string&amp;amp; msg) : _Msg(msg)
    {
    }

&lt;span class='kw'&gt;public&lt;/span&gt;:
    &lt;span class='kw'&gt;const char&lt;/span&gt;* what() &lt;span class='kw'&gt;const&lt;/span&gt; override
    {
        &lt;span class='kw'&gt;return&lt;/span&gt; _Msg.c_str();
    }

&lt;span class='kw'&gt;protected&lt;/span&gt;:
    std::string _Msg;
};

&lt;span class='com'&gt;//////////////////////////////////////////////////////////////////////////&lt;/span&gt;

&lt;span class='kw'&gt;class&lt;/span&gt; file;
&lt;span class='kw'&gt;struct&lt;/span&gt; _open_file_t;
&lt;span class='kw'&gt;struct&lt;/span&gt; _write_file_t;

&lt;span class='kw'&gt;struct&lt;/span&gt; file_exception : &lt;span class='kw'&gt;public&lt;/span&gt; my_exception
{
&lt;span class='kw'&gt;public&lt;/span&gt;:
    file_exception() : my_exception(&lt;span class='str'&gt;"Unknown file error"&lt;/span&gt;)
    {
    }

    file_exception(&lt;span class='kw'&gt;const&lt;/span&gt; std::string&amp;amp; msg) : my_exception(msg)
    {
    }

&lt;span class='kw'&gt;public&lt;/span&gt;:
    &lt;span class='kw'&gt;typedef&lt;/span&gt; _open_file_t open_file;
    &lt;span class='kw'&gt;typedef&lt;/span&gt; _write_file_t write_file;
};

&lt;span class='kw'&gt;struct&lt;/span&gt; _open_file_t : &lt;span class='kw'&gt;public&lt;/span&gt; file_exception {};
&lt;span class='kw'&gt;struct&lt;/span&gt; _write_file_t : &lt;span class='kw'&gt;public&lt;/span&gt; file_exception {};&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Применение&lt;/b&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;try&lt;/span&gt;
    {
        FILE* file = fopen(&lt;span class='str'&gt;"sacrament.dat"&lt;/span&gt;, &lt;span class='str'&gt;"a+"&lt;/span&gt;);

        &lt;span class='kw'&gt;if&lt;/span&gt; (!file)
            &lt;span class='kw'&gt;throw&lt;/span&gt; file_exception::open_file();

        &lt;span class='kw'&gt;if&lt;/span&gt; (fwrite(&lt;span class='str'&gt;"blah-blah"&lt;/span&gt;, 1, 9, file) == 0)
            &lt;span class='kw'&gt;throw&lt;/span&gt; file_exception::write_file();

        &lt;span class='kw'&gt;if&lt;/span&gt; (fclose(file))
            &lt;span class='kw'&gt;throw&lt;/span&gt; file_exception();
    }
    &lt;span class='kw'&gt;catch&lt;/span&gt; (file_exception::open_file&amp;amp; e)
    {
        std::cout &amp;lt;&amp;lt; e.what() &amp;lt;&amp;lt; std::endl;
    }
    &lt;span class='kw'&gt;catch&lt;/span&gt; (file_exception::write_file&amp;amp; e)
    {
        std::cout &amp;lt;&amp;lt; e.what() &amp;lt;&amp;lt; std::endl;
    }
    &lt;span class='kw'&gt;catch&lt;/span&gt; (file_exception&amp;amp; e)
    {
        &lt;span class='com'&gt;//whatta?!&lt;/span&gt;
    }
    &lt;span class='kw'&gt;catch&lt;/span&gt; (std::exception&amp;amp; e)
    {
        &lt;span class='com'&gt;//looks like we screwed up...&lt;/span&gt;
    }&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Заключение&lt;/b&gt;&lt;br /&gt;
Имеем Ъ-механизм исключений (ИМХО)&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class='q'&gt;&lt;p&gt;&lt;b&gt;Вопрос&lt;/b&gt;&lt;br /&gt;
У кого какие идеи по этому поводу? Что можно сделать хорошего в контексте? С++ 11 очень приветствуется.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/Tbqs8CPko58" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Fri, 10 Feb 2012 10:41:37 GMT</pubDate>
		
			<author>о_О &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>22</slash:comments>
		
	</item>

	<item>
		<title>boost.preprocessor генерация ленивых AND/OR</title>
		<link>http://www.rsdn.ru/Forum/cpp/4611952.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/4611952.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/4611952.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4611952</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4611952.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4611952</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;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
std::cout &amp;lt;&amp;lt; Ext_OR((b1)(Ext_AND((b2)(b1)))(b3)) &amp;lt;&amp;lt; std::endl;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&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;
std::cout &amp;lt;&amp;lt; ( (b1) ? (b1) : ( !(b2) ? (b2) : ( b1 ) ) ? ( !(b2) ? (b2) : ( b1 ) ) : ( b3 ) ) &amp;lt;&amp;lt; std::endl;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
но осталось решить проблему многократного выполнения выражений. в примере выше, b1 будет рассчитываться 4 раза. что недопустимо.&lt;br /&gt;
&lt;br /&gt;
для этого, решил воспользоваться расширением GCC: &lt;a href="http://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html" class="m" target="_blank"&gt;Statements and Declarations in Expressions&lt;/a&gt;. и, за одно, и typeof().&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::cout &amp;lt;&amp;lt; (
      ({typeof(b1) _1=b1;       &lt;span class='com'&gt;// level +1&lt;/span&gt;
      _1?
         ({typeof(b2) _2=b2;    &lt;span class='com'&gt;// level +2&lt;/span&gt;
            _2?
            ({typeof(b3) _3=b3; &lt;span class='com'&gt;// level +3&lt;/span&gt;
               _3?
                  _3
               :0;
            })                  &lt;span class='com'&gt;// level -3&lt;/span&gt;
            :0;
         })                     &lt;span class='com'&gt;// level -2&lt;/span&gt;
         :0;
      })                        &lt;span class='com'&gt;// level -1&lt;/span&gt;
   ) &amp;lt;&amp;lt; std::endl;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
но тут встала другая проблема &amp;mdash; скопы. препроцессор не умеет рекурсию.&lt;br /&gt;
&lt;br /&gt;
я подумал, генерировать на первом проходе открывающиеся скопы, а на втором &amp;mdash; закрывающиеся.&lt;br /&gt;
но что-то тут не ладно. я полагаю, из-за непарных скобок.&lt;br /&gt;
к примеру, такой макрос "Ext_OR((b1)(b2)(b3))" на первом приходе раскрывается в:&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
({typeof(b1) _0 = b1; (_0) ? (_0) : ({typeof(b2) _1 = b2; (_1) ? (_1) : b3&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
и препроцессор не жалуется.&lt;br /&gt;
но если попробовать сделать вложенные макросы типа "Ext_OR((b1)(b2)(b3)(Ext_OR((b1)(b2)(b3))))", то получим ошибку: error: unterminated argument list invoking macro "BOOST_PP_REPEAT_1"&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;
&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;boost/preprocessor.hpp&amp;gt;

&lt;span class='kw'&gt;#define&lt;/span&gt; Ext_OR_SUBCOND(unused, idx, seq) \
   ({typeof(BOOST_PP_SEQ_ELEM(idx, seq)) \
      _ ## idx = BOOST_PP_SEQ_ELEM(idx, seq); (_ ## idx) ? (_ ## idx) :

&lt;span class='kw'&gt;#define&lt;/span&gt; Ext_OR(seq) \
   ( \
      BOOST_PP_REPEAT( \
         BOOST_PP_SUB(BOOST_PP_SEQ_SIZE(seq), 1), \
         Ext_OR_SUBCOND, \
         seq \
      ) \
      BOOST_PP_SEQ_ELEM( \
         BOOST_PP_SUB(BOOST_PP_SEQ_SIZE(seq), 1), \
         seq \
      ) \
   )

&lt;span class='kw'&gt;#define&lt;/span&gt; Ext_AND_SUBCOND(unused, idx, seq) \
   ({typeof(BOOST_PP_SEQ_ELEM(idx, seq)) \
      _ ## idx = BOOST_PP_SEQ_ELEM(idx, seq); !(_ ## idx) ? (_ ## idx) :

&lt;span class='kw'&gt;#define&lt;/span&gt; Ext_AND(seq) \
   ( \
      BOOST_PP_REPEAT( \
         BOOST_PP_SUB(BOOST_PP_SEQ_SIZE(seq), 1), \
         Ext_AND_SUBCOND, \
         seq\
      ) \
      BOOST_PP_SEQ_ELEM( \
         BOOST_PP_SUB(BOOST_PP_SEQ_SIZE(seq), 1), \
         seq \
      ) \
   )

&lt;span class='kw'&gt;int&lt;/span&gt; main() {
   &lt;span class='kw'&gt;int&lt;/span&gt; b1=0, b2=1, b3=2;
   Ext_OR((b1)(b2)(b3)); &lt;span class='com'&gt;// ok&lt;/span&gt;
   Ext_OR((b1)(b2)(b3)Ext_OR((b1)(b2)(b3)))); &lt;span class='com'&gt;// error
   //Ext_AND((b1)(b2)(b3));
   /*
   std::cout &amp;lt;&amp;lt;
   Ext_OR(
      (b1)
      Ext_AND((b2)(b1))
      (b3)
   )
   &amp;lt;&amp;lt; std::endl; //wait: 2; recieve: 2

   std::cout &amp;lt;&amp;lt;
   Ext_OR(
      (b1)
      Ext_AND((b1)(b2))
      (b3)
   )
   &amp;lt;&amp;lt; std::endl; //wait: 2; recieve: 2
*/&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/Tz67Brmh6hE" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Fri, 10 Feb 2012 08:14:52 GMT</pubDate>
		
			<author>niXman &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>6</slash:comments>
		
	</item>

	<item>
		<title>stringstream и strstream</title>
		<link>http://www.rsdn.ru/Forum/cpp/4611059.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/4611059.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/4611059.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4611059</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4611059.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4611059</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Какая разница между std::stringstream и std::strstream?&lt;br /&gt;
&lt;br /&gt;
И для чего нужен std::ends? Когда его стоит вызывать?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/Inr1wkX4ZM0" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Thu, 09 Feb 2012 16:01:20 GMT</pubDate>
		
		
			<slash:comments>2</slash:comments>
		
	</item>

	<item>
		<title>Нужен список</title>
		<link>http://www.rsdn.ru/Forum/cpp/4608027.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/4608027.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/4608027.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4608027</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4608027.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4608027</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Приветствую.&lt;br /&gt;
&lt;br /&gt;
А нет ли где-нибудь списка implementation-defined / unspecified / undefined behaviour?&lt;br /&gt;
&lt;br /&gt;
Стандарт в качестве такого списка не предлагать.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/OP02DfuE1Hk" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Tue, 07 Feb 2012 17:08:14 GMT</pubDate>
		
		
			<slash:comments>41</slash:comments>
		
	</item>

	<item>
		<title>Непонятки с NULL и char</title>
		<link>http://www.rsdn.ru/Forum/cpp/4607500.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/4607500.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/4607500.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4607500</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4607500.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4607500</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Приветствую.&lt;br /&gt;
&lt;br /&gt;
Долгое время считал, что NULL в C может быть представлен в виде&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;#define&lt;/span&gt; NULL 0&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;#define&lt;/span&gt; NULL (&lt;span class='kw'&gt;void&lt;/span&gt;*)0&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
а в C++ только в виде&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;#define&lt;/span&gt; NULL 0&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
или 0L или 0UL.&lt;br /&gt;
&lt;br /&gt;
Недавно прочитал стандарт C99:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class='q'&gt;&lt;p&gt;&lt;b&gt;7.17&lt;/b&gt; Common definitions &amp;lt;stddef.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
3 The macros are&lt;br /&gt;
NULL&lt;br /&gt;
which expands to an implementation-defined null pointer constant&lt;br /&gt;
&lt;br /&gt;
...&lt;/p&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
Что? implementation-defined? Это как так? Т.е. NULL может быть хоть 1, хоть что угодно?&lt;br /&gt;
&lt;br /&gt;
Также довольно странный момент с char.&lt;br /&gt;
&lt;br /&gt;
Постоянно думал, что sizeof (char) == 1 по стандарту, однако увидел, что&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class='q'&gt;&lt;p&gt;&lt;b&gt;6.2.5&lt;/b&gt; Types&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
3 An object declared as type char is large enough to store any member of the basic&lt;br /&gt;
execution character set&lt;br /&gt;
&lt;br /&gt;
...&lt;/p&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Т.е. char может быть хоть 4 байта? Ведь он будет достаточно большим, чтобы вместить любой член набора символов.&lt;br /&gt;
&lt;br /&gt;
Видимо, я чего-то не понимаю, прошу объяснить.&lt;br /&gt;
&lt;br /&gt;
Стандарта C++ сейчас нет, там точно такая же ситуация?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/uawMEMunESU" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Tue, 07 Feb 2012 11:46:36 GMT</pubDate>
		
		
			<slash:comments>13</slash:comments>
		
	</item>

	<item>
		<title>снова про обработку ошибок</title>
		<link>http://www.rsdn.ru/Forum/cpp/4606463.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/4606463.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/4606463.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4606463</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4606463.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4606463</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;&lt;a href="http://bitsquid.blogspot.com/2012/01/sensible-error-handling-part-1.html" class="m" target="_blank"&gt;Sensible Error Handling &amp;mdash; Part 1&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://bitsquid.blogspot.com/2012/02/sensible-error-handling-part-2.html" class="m" target="_blank"&gt;Sensible Error Handling &amp;mdash; Part 2&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/1vW3P4zaaJw" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Mon, 06 Feb 2012 18:56:29 GMT</pubDate>
		
			<author>night beast &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>14</slash:comments>
		
	</item>

	<item>
		<title>Предложение по изменению стандарта С++ 2011</title>
		<link>http://www.rsdn.ru/Forum/cpp/4605775.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/4605775.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/4605775.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4605775</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4605775.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4605775</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Кто использует в своей практике стандартные алгоритмы или любит ими заниматься наверное уже обратили внимание, что в новом стандарте появились полезные глобальные функции &lt;b&gt;std::begin&lt;/b&gt; и &lt;b&gt;std::end&lt;/b&gt;, которые позволяют унифицированным образом задавать диапазоны как для стандартных контейнеров, так и для массивов. То есть ранее до введения в стандарт этих глобальных функций возникали сложности, как задать диапазон одновременно в единой манере и для сттандартных контейнеров и для массивов, так как у массивов нет функций-членов &lt;b&gt;begin&lt;/b&gt; и &lt;b&gt;end&lt;/b&gt;.&lt;br /&gt;
Однако по непонятной причине, скорее всего в спешке, в стандарт забыли включить функции &lt;b&gt;cbegin&lt;/b&gt; и &lt;b&gt;cend&lt;/b&gt; для принудительного получения константных итераторов или указателей.&lt;br /&gt;
Но хуже того неожиданно обнаруживается, что пробллема сохраняется, когда надо использовать реверсивные диапазоны. Увы, в стандарте также отсутствуют глобальные фуннкции &lt;b&gt;rbegin&lt;/b&gt;, &lt;b&gt;rend&lt;/b&gt;, &lt;b&gt;crbegin&lt;/b&gt; и &lt;b&gt;crend&lt;/b&gt;. Я сделал два предложения по дополнению и изменению стандарта. Сначала я предложил включить в стандарт функции &lt;b&gt;cbegin&lt;/b&gt; и &lt;b&gt;cend&lt;/b&gt;, а затем в своем втором предложении написал о необхходимости включить также глобальные функции &lt;b&gt;rbegin&lt;/b&gt;, &lt;b&gt;rend&lt;/b&gt;, &lt;b&gt;crbegin&lt;/b&gt; и &lt;b&gt;crend&lt;/b&gt;. По первому моему предложению уже есть заметные подвижки. К сожалению второе мое предложение пока что рассматривается на уровне кулуарных обсуждений.&lt;br /&gt;
Кому это интересно, уто следит за изменениями в стандарте, можете более подробно ознакомиться с вопросом &lt;a href="http://clipper.borda.ru/?1-6-0-00000016-000-0-0-1328526112" class="m" target="_blank"&gt;здесь&lt;/a&gt;&lt;br /&gt;
Кстати сказать, здесь уже была тема под названием,  которое звучало приблизительно так: что бы вы хотели увидеть в новом стандарте. Можно считать это сообщщение дополнением к той теме. То есть это то, что я хотел бы увидеть в новом стандарте, и что я на деле продвигаю в новый станларт.&lt;br /&gt;
&lt;br /&gt;
&lt;div class='mod'&gt;08.02.12 21:30: Перенесено из 'C/C++'&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/C361U470WQI" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Mon, 06 Feb 2012 12:12:05 GMT</pubDate>
		
			<author>Сыроежка &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>16</slash:comments>
		
	</item>

	<item>
		<title>No guarantees when calling tellg in text mode</title>
		<link>http://www.rsdn.ru/Forum/cpp/4605646.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/4605646.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/4605646.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4605646</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4605646.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4605646</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;Hi,&lt;br /&gt;
&lt;br /&gt;
Thanks for reporting this issue. I've resolved it as By Design because the C++ Standard does not provide behavior guarantees when calling tellg() on a file opened in text mode. What's happening is that the putback buffer, accessed by the peek() call, changes the relationship between the official and effective file positions.&lt;br /&gt;
&lt;br /&gt;
If you have any further questions, feel free to E-mail me at stl@microsoft.com .&lt;br /&gt;
&lt;br /&gt;
Stephan T. Lavavej&lt;br /&gt;
Visual C++ Libraries Developer&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://connect.microsoft.com/VisualStudio/feedback/details/594816/wifstream-wfstream-implementation-bug-in-visual-c-2010" class="m" target="_blank"&gt;здесь&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Где это the C++ Standard does not provide behavior guarantees when calling tellg() on a file opened in text mode?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/FbeRW4BXUz0" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Mon, 06 Feb 2012 10:57:47 GMT</pubDate>
		
			<author>igna &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>4</slash:comments>
		
	</item>

	<item>
		<title>[С++0х] Ошибка линкера и constexpr</title>
		<link>http://www.rsdn.ru/Forum/cpp/4605198.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/4605198.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/4605198.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4605198</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4605198.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4605198</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Приветствую!&lt;br /&gt;
&lt;br /&gt;
Собственно вот небольшой код, компилился на gcc 4.7 c -std=c++0x.&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;template&lt;/span&gt; &amp;lt;&lt;span class='kw'&gt;typename&lt;/span&gt; ArrayT, size_t Size&amp;gt;
&lt;span class='kw'&gt;struct&lt;/span&gt; Array
{
    &lt;span class='kw'&gt;static&lt;/span&gt; constexpr ArrayT value[Size] = {};
};

&lt;span class='kw'&gt;static&lt;/span&gt; constexpr &lt;span class='kw'&gt;char&lt;/span&gt; val[3] = {};

&lt;span class='kw'&gt;int&lt;/span&gt; main()
{
    std::cout &amp;lt;&amp;lt; Array&amp;lt;&lt;span class='kw'&gt;char&lt;/span&gt;, 3&amp;gt;::value &amp;lt;&amp;lt; std::endl; &lt;span class='com'&gt;// linker error (undefined reference)&lt;/span&gt;
    std::cout &amp;lt;&amp;lt; val &amp;lt;&amp;lt; std::endl; &lt;span class='com'&gt;// ok&lt;/span&gt;
}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
Это таки баг?&lt;div class='tagline'&gt;&lt;a href="http://trac.opensvn.ru/avalon/wiki/screenshot" class="m" target="_blank"&gt;avalon 1.0rc3 build 426, zlib 1.2.3&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/6iftt_4mIvk" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Mon, 06 Feb 2012 05:16:05 GMT</pubDate>
		
			<author>wander &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>5</slash:comments>
		
	</item>

	<item>
		<title>Сравнение скорости if и switch</title>
		<link>http://www.rsdn.ru/Forum/cpp/4604663.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/4604663.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/4604663.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4604663</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4604663.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4604663</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Приветствую.&lt;br /&gt;
&lt;br /&gt;
А что, switch действительно выигрывает в скорости по сравнению с конструкциями if &amp;mdash; else, если значения в нём последовательные?&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;enum&lt;/span&gt; {a, b, c, d, e};

&lt;span class='kw'&gt;int&lt;/span&gt; value;

...

&lt;span class='kw'&gt;void&lt;/span&gt; f ()
{
    ...
    &lt;span class='kw'&gt;if&lt;/span&gt; (value == a)
    {
        ...
    }
    &lt;span class='kw'&gt;else if&lt;/span&gt; (value == b)
    {
        ...
    }
    &lt;span class='kw'&gt;else if&lt;/span&gt; (value == c)
    {
        ...
    }
    &lt;span class='kw'&gt;else if&lt;/span&gt; (value == d)
    {
        ...
    }
    &lt;span class='kw'&gt;else if&lt;/span&gt; (value == e)
    {
        ...
    }
    ...
}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вызов данной функции происходит довольно часто, поэтому интересует, будет ли хоть какой-то полезный выигрыш от использования switch в данном случае?&lt;br /&gt;
&lt;br /&gt;
Не оптимизирует ли всё это дело компилятор так, что выйдет либо одинаковая производительность, либо даже хуже?&lt;br /&gt;
&lt;br /&gt;
Использую MS-компилятор.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/9ah4O9-w5Rg" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Sun, 05 Feb 2012 15:21:51 GMT</pubDate>
		
		
			<slash:comments>13</slash:comments>
		
	</item>

	<item>
		<title>Фрактальная графика</title>
		<link>http://www.rsdn.ru/Forum/cpp/4604352.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/4604352.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/4604352.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4604352</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4604352.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4604352</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Здравствуйте! суть проблемы такова: пытаюсь нарисовать картинки с помощью Множество Мандельброта. Вот ссылка на ресурс- &lt;a href="http://fractalworld.xaoc.ru/Mandelbrot_set_and_Julia_set" class="m" target="_blank"&gt;http://fractalworld.xaoc.ru/Mandelbrot_set_and_Julia_set&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;#include&lt;/span&gt; &amp;lt;stdio.h&amp;gt;
&lt;span class='kw'&gt;#include&lt;/span&gt; &amp;lt;stdlib.h&amp;gt;
&lt;span class='kw'&gt;#include&lt;/span&gt; &amp;lt;math.h&amp;gt;
&lt;span class='kw'&gt;#include&lt;/span&gt; &amp;lt;conio.h&amp;gt;
&lt;span class='kw'&gt;#include&lt;/span&gt; &amp;lt;graphics.h&amp;gt;

&lt;span class='kw'&gt;const int&lt;/span&gt; iter=50;
&lt;span class='kw'&gt;const int&lt;/span&gt; max=16;


&lt;span class='kw'&gt;struct&lt;/span&gt; Obj
{
  &lt;span class='kw'&gt;double&lt;/span&gt; x, y;
 };

 &lt;span class='kw'&gt;void&lt;/span&gt; GraphInit(){
   &lt;span class='kw'&gt;int&lt;/span&gt; gdriver = DETECT, gmode, errorcode;
   initgraph(&amp;amp;gdriver, &amp;amp;gmode, &lt;span class='str'&gt;"c:\\langs\\BC\\bgi"&lt;/span&gt;);
   errorcode = graphresult();
   &lt;span class='kw'&gt;if&lt;/span&gt; (errorcode != grOk)
   {
      printf(&lt;span class='str'&gt;"Graphics error: %s\n"&lt;/span&gt;, grapherrormsg(errorcode));
      printf(&lt;span class='str'&gt;"Press any key to exit the program:"&lt;/span&gt;);
      getch();
      exit(1);
   }
}

&lt;span class='kw'&gt;int&lt;/span&gt; main()
{
  GraphInit();
  Obj z, t, c;
  &lt;span class='kw'&gt;int&lt;/span&gt; x, y, n;;
  &lt;span class='kw'&gt;int&lt;/span&gt; mx, my;

   mx=getmaxx()/2;
   my=getmaxy()/2;

   &lt;span class='kw'&gt;for&lt;/span&gt;(y=-my; y=my; y++)
   {
     &lt;span class='kw'&gt;for&lt;/span&gt;(x=-mx;x=mx;x++)
     {
       n=0;
       c.x=x*0.005;
       c.y=y*0.005;
       z.x=1;
       z.y=1;
       &lt;span class='kw'&gt;while&lt;/span&gt;(pow(z.x,2)+pow(z.y,2)&amp;lt;max &amp;amp;&amp;amp; n&amp;lt;iter)
       {
         t=z;
         z.x=pow(t.x,2)-pow(t.y,2)+c.x;
         z.y=2*t.x*t.y+c.y;
         n++;
        }
       &lt;span class='kw'&gt;if&lt;/span&gt;(n&amp;lt;iter)
       {
        putpixel(mx+x, my+y,16-(fmod(n,16)));
       }
     }
    }
    getch();
    closegraph();
    &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/Nh6FOqpDkTI" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Sun, 05 Feb 2012 10:28:45 GMT</pubDate>
		
			<author>algoritm256 &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>9</slash:comments>
		
	</item>

	<item>
		<title>то ли лыжи не едут, то ли я е...й</title>
		<link>http://www.rsdn.ru/Forum/cpp/4603476.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/4603476.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/4603476.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4603476</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4603476.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4603476</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;int&lt;/span&gt; main()
{
    &lt;span class='kw'&gt;const int&lt;/span&gt; i = 0;
    &lt;span class='kw'&gt;int&lt;/span&gt; *pi = &lt;span class='kw'&gt;const_cast&lt;/span&gt;&amp;lt;&lt;span class='kw'&gt;int&lt;/span&gt;*&amp;gt;(&amp;amp;i);
    &lt;span class='kw'&gt;int&lt;/span&gt; &amp;amp;ci = *pi;

    ++(ci);
    ++(*pi);

    std::cout &amp;lt;&amp;lt; &amp;amp;i &amp;lt;&amp;lt; &lt;span class='str'&gt;" : "&lt;/span&gt; &amp;lt;&amp;lt; i &amp;lt;&amp;lt; std::endl;
    std::cout &amp;lt;&amp;lt; &amp;amp;ci &amp;lt;&amp;lt; &lt;span class='str'&gt;" : "&lt;/span&gt; &amp;lt;&amp;lt; ci &amp;lt;&amp;lt; std::endl;
    std::cout &amp;lt;&amp;lt; pi &amp;lt;&amp;lt; &lt;span class='str'&gt;" : "&lt;/span&gt; &amp;lt;&amp;lt; *pi &amp;lt;&amp;lt; std::endl;

    &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;
VC2010 (Win7) дает такой результат:&lt;br /&gt;
&lt;ul style='margin-top:0; margin-bottom:0;'&gt;0030FDE8 : 0&lt;br /&gt;
0030FDE8 : 2&lt;br /&gt;
0030FDE8 : 2&lt;/ul&gt;
&lt;br /&gt;
В то время как gcc (ubuntu 11.04):&lt;br /&gt;
&lt;ul style='margin-top:0; margin-bottom:0;'&gt;0x7fffb03d260c: 2&lt;br /&gt;
0x7fffb03d260c: 2&lt;br /&gt;
0x7fffb03d260c: 2&lt;/ul&gt;
&lt;br /&gt;
Что думать по этому поводу или лучше ничего не думать?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/QmiZFbjfKSQ" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Sat, 04 Feb 2012 13:38:57 GMT</pubDate>
		
			<author>jinjik &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>24</slash:comments>
		
	</item>

	<item>
		<title>Повторная инициализация ссылки невозможна?</title>
		<link>http://www.rsdn.ru/Forum/cpp/4603150.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/4603150.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/4603150.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4603150</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4603150.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4603150</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Повторная инициализация ссылки невозможна? Этот пример говорит об обратном: &lt;a href="http://ideone.com/zRPOn" class="m" target="_blank"&gt;http://ideone.com/zRPOn&lt;/a&gt;. gcc-4.6.1 и msvc-9.0 не возражают.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/9GvAfL7iHVE" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Sat, 04 Feb 2012 06:04:14 GMT</pubDate>
		
			<author>rg45 &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>6</slash:comments>
		
	</item>

	<item>
		<title>обработка ошибок АД или Рай</title>
		<link>http://www.rsdn.ru/Forum/cpp/4602777.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/4602777.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/4602777.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4602777</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4602777.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4602777</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;
я себе ставлю 1 у меня получается полный ахтунг &lt;br /&gt;
стыдно было бы показать хотя вроде и программирую &lt;br /&gt;
не первый день уже пора бы и научиться в чем дело &lt;br /&gt;
не знаю сейчас смотрю тут на свою писанину последних &lt;br /&gt;
месяцев и волосы на голове дыбом это не обработка &lt;br /&gt;
ошибок это АД на земле &lt;br /&gt;
&lt;br /&gt;
если Вам эта тема близка Welcome! пишите что думаете&lt;br /&gt;
а также не забывайте ставить себе оценку&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/cDEH_rSK4qg" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Fri, 03 Feb 2012 16:47:15 GMT</pubDate>
		
			<author>jyuyjiyuijyu &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>39</slash:comments>
		
	</item>

	<item>
		<title>goto jmp to reinitialize object</title>
		<link>http://www.rsdn.ru/Forum/cpp/4601013.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/4601013.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/4601013.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4601013</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4601013.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4601013</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;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[])
{
    puts (&lt;span class='str'&gt;"hjknkiknhkhnk"&lt;/span&gt;);

    &lt;span class='kw'&gt;int&lt;/span&gt; ecx = 0;

cycl:

    string s(&lt;span class='str'&gt;"bjuyyubtubtu"&lt;/span&gt;);
    
    puts(&lt;span class='str'&gt;"ngyugyuyuyuu"&lt;/span&gt;);

    &lt;span class='kw'&gt;if&lt;/span&gt; (ecx++ &amp;gt; 10)
        &lt;span class='kw'&gt;goto&lt;/span&gt; end; 
    
    &lt;span class='kw'&gt;goto&lt;/span&gt; cycl; &lt;span class='com'&gt;// гарантируется ли тут вызов деструктора ?&lt;/span&gt;
end:;
}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
вообще VC++ делает вызов деструктора перед джампом на cycl &lt;br /&gt;
и второй вызов деструктора делает после перехода на метку end&lt;br /&gt;
&lt;br /&gt;
а это по стандарту ? (делать вызов деструктора перед джампом на cycl)&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/I3BYGrdsXGs" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Thu, 02 Feb 2012 12:32:38 GMT</pubDate>
		
			<author>jyuyjiyuijyu &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>6</slash:comments>
		
	</item>

	<item>
		<title>Макро со значением пробел</title>
		<link>http://www.rsdn.ru/Forum/cpp/4600794.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/cpp/4600794.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/cpp/4600794.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4600794</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4600794.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4600794</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Можно ли написать макроопределение со значением пробел?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/cpp/~4/Nr7DrRXFwKE" height="1" width="1"/&gt;</description>
		
		<category>cpp</category>
		<pubDate>Thu, 02 Feb 2012 12:24:06 GMT</pubDate>
		
			<author>igna &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>5</slash:comments>
		
	</item>
</channel>
</rss>

