<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414294&amp;view=findpost&amp;p=3790735</guid>
        <pubDate>Fri, 22 Feb 2019 15:12:40 +0000</pubDate>
        <title>CRTP inheritance problem</title>
        <link>https://forum.sources.ru/index.php?showtopic=414294&amp;view=findpost&amp;p=3790735</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414294&view=findpost&p=3790683'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>AZote &#064; <time class="tag-quote__quoted-time" datetime="2019-02-22T00:25:18+03:00">21.02.19, 21:25</time></span><div class='quote '>Кстати, не подскажете, что кошернее, использовать CRTP, как я сделал выше, или сделать виртуальную функцию в шаблонном классе... ?</div></div>Стандартный полиморфизм выгоден, когда реализация задаётся, а то и меняется, т.е. не фиксирована, в ран-тайм. Если такой задачи нет, то статический полиморфизм на шаблонах выгоднее. Ты по-прежнему имеешь возможность легко и просто менять реализацию, только не в ран-тайм, а в перед компиляцией, и при этом не имеешь потерь в производительности от позднего связывания.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414294&amp;view=findpost&amp;p=3790726</guid>
        <pubDate>Fri, 22 Feb 2019 10:50:58 +0000</pubDate>
        <title>CRTP inheritance problem</title>
        <link>https://forum.sources.ru/index.php?showtopic=414294&amp;view=findpost&amp;p=3790726</link>
        <description><![CDATA[Олег М: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414294&view=findpost&p=3790683'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>AZote &#064; <time class="tag-quote__quoted-time" datetime="2019-02-21T21:25:18+00:00">21.02.19, 21:25</time></span><div class='quote '>Кстати, не подскажете, что кошернее, использовать CRTP, как я сделал выше, или сделать виртуальную функцию в шаблонном классе, например так:</div></div><br>
Виртуальная функция нужна если ты планируешь делать так <br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">IntervalMeasurer&#60;Measure&#62; *p = new InstantIntervalMeasurer&#60;Measure&#62;();</div><div class="code_line">p-&#62;getAverage(...);</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
Тогда неплохо было бы добавить ещё и вертуальный деструктор.<br>
<br>
Если не планируешь, то лучше без виртульных методов]]></description>
        <author>Олег М</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414294&amp;view=findpost&amp;p=3790722</guid>
        <pubDate>Fri, 22 Feb 2019 09:25:04 +0000</pubDate>
        <title>CRTP inheritance problem</title>
        <link>https://forum.sources.ru/index.php?showtopic=414294&amp;view=findpost&amp;p=3790722</link>
        <description><![CDATA[ЫукпШ: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414294&view=findpost&p=3790566'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>AZote &#064; <time class="tag-quote__quoted-time" datetime="2019-02-20T11:38:05+00:00">20.02.19, 11:38</time></span><div class='quote '>.. компилятор выдает ошибки рода:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">error: ‘interval’ was not declared in this scope</div><div class="code_line">error: ‘measures’ was not declared in this scope</div></ol></div></div></div></div><br>
?  :wall:</div></div><br>
А если попробовать приблизительно так:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">template&#60;class Measure&#62;</div><div class="code_line">class IntervalInstantMeasurer : public IntervalMeasurer&#60;IntervalInstantMeasurer&#60;Measure&#62;, Measure&#62;</div><div class="code_line">{</div><div class="code_line">&nbsp;</div><div class="code_line">protected:</div><div class="code_line">&nbsp;&nbsp; &nbsp;using IntervalMeasurer&#60;IntervalInstantMeasurer&#60;Measure&#62;, Measure&#62;::std::vector&#60;Measure&#62; measures;</div><div class="code_line">&nbsp;&nbsp; &nbsp;using IntervalMeasurer&#60;IntervalInstantMeasurer&#60;Measure&#62;, Measure&#62;::uint32_t interval;</div><div class="code_line">&nbsp;</div><div class="code_line">public:</div><div class="code_line">&nbsp;</div><div class="code_line">// ...</div><div class="code_line">// ...</div><div class="code_line">&nbsp;</div><div class="code_line">};</div></ol></div></div></div></div>]]></description>
        <author>ЫукпШ</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414294&amp;view=findpost&amp;p=3790683</guid>
        <pubDate>Thu, 21 Feb 2019 21:25:18 +0000</pubDate>
        <title>CRTP inheritance problem</title>
        <link>https://forum.sources.ru/index.php?showtopic=414294&amp;view=findpost&amp;p=3790683</link>
        <description><![CDATA[AZote: Кстати, не подскажете, что кошернее, использовать CRTP, как я сделал выше, или сделать виртуальную функцию в шаблонном классе, например так:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">template&#60;class Measure&#62;</div><div class="code_line">class IntervalMeasurer</div><div class="code_line">{</div><div class="code_line">protected:</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::vector&#60;Measure&#62; measures;</div><div class="code_line">&nbsp;&nbsp; &nbsp;uint32_t interval = 0;</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;void addMeasure(Measure value) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;measures.push_back(measure);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;virtual Measure getAverage(uint32_t period) const = 0;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Measure getAvg1() const {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return getAverage(1*60);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;Measure getAvg5() const {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return getAverage(5*60);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">template&#60;class Measure&#62;</div><div class="code_line">class InstantIntervalMeasurer : public IntervalMeasurer&#60;Measure&#62;</div><div class="code_line">{</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;Measure getAverage(uint32_t period) const override {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return Measure();</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">};</div></ol></div></div></div></div>]]></description>
        <author>AZote</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414294&amp;view=findpost&amp;p=3790584</guid>
        <pubDate>Wed, 20 Feb 2019 14:38:50 +0000</pubDate>
        <title>CRTP inheritance problem</title>
        <link>https://forum.sources.ru/index.php?showtopic=414294&amp;view=findpost&amp;p=3790584</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414294&view=findpost&p=3790580'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-02-20T14:20:16+00:00">20.02.19, 14:20</time></span><div class='quote '>Могу предположить что когда он доходит до компиляции твоих пременных, он просто про них не знает, так как класс базовый у тебя шаблонный, и он судя во всему до этого момента еще не инстанцирован.</div></div>Не, не поэтому. Был или не был инстанцирован, неважно, это уже вторая фаза, и ежели чё, тут же и сынстанцируется. Ошибка же возникает ещё на первой фазе связывания имён. И interval, и measures не обозначены как зависимые имена, т.к. для них отсутствует квалификация. По правилам связывания имён независимые имена обязаны быть окончательно связаны на первой фазе, в противном случае велик риск получить сайд-эффекты а-ля препроцессор. Т.с. компилятор защищает автора базового шаблона, который отсутствием квалификации для независимых имён зафиксировал их смысл, от неожиданного контекста в точке инстацирования, который пользователь авторского шаблона невольно мог наполнить &quot;неподходящими&quot; именами (на чём макросоподобный сайд-эффект как раз и проявился бы).<br>
Поэтому компилятор первым делом смотрит в текущую область видимости, не видит их и смотрит в окаймляющую, каковой является глобальная. В область видимости базового класса, даже притом, что он определён, он не заглядывает, т.к. у него нет никакой информации, что туда надо смотреть, независимые имена там точно не должны быть найдены. Кроме того, он и не должен туда смотреть, т.к. в точке инстацирования к первичному шаблону базового класса могут быть добавлены специализации (размещённые уже после определения производных классов, такой же сайд-эффект в общем-то), поэтому, если б он туда смотрел, собранная на первой фазе информация об именах может быть не полной, искажённой сайд-эффектами или даже ошибочной.<br>
Исправление ситуации достигается введением зависимости для interval и measures посредством явной квалификации. И это правильно, т.к. т.о. пользователь шаблона явно декларирует их зависимость от шаблонных параметров, что даёт право компилятору отложить их окончательное связывание до точки инстанцирования. Можно квалифицирующим маршрутом явно указать базовый класс, как у <strong class='tag-b'>Dushevny</strong>, можно и просто посредством this, который неявно подразумевает полную область видимости инстанцируемого экземпляра, включая и унаследованные сущности. В обоих случаях эти имена оказываются явно зависимыми от контента базового класса, а значит их окончательное связывание должно быть отложено до второй фазы. Что компилятор и делает, и у него всё срастается, т.к. это именно то, что хотел пользователь шаблона. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2019-02-20T15:10:20+00:00">20.02.19, 15:10</time></span></span><br>
По первой ссылке <strong class='tag-b'>Wound</strong> как раз приводится хороший пример сайд-эффекта.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414294&amp;view=findpost&amp;p=3790580</guid>
        <pubDate>Wed, 20 Feb 2019 14:20:16 +0000</pubDate>
        <title>CRTP inheritance problem</title>
        <link>https://forum.sources.ru/index.php?showtopic=414294&amp;view=findpost&amp;p=3790580</link>
        <description><![CDATA[Wound: Могу предположить что когда он доходит до компиляции твоих пременных, он просто про них не знает, так как класс базовый у тебя шаблонный, и он судя во всему до этого момента еще не инстанцирован. Поэтому и ругнулся. <br>
А то что ты написал там this и у тебя заработало, так это называеться <a class='tag-url' href='https://blogs.msdn.microsoft.com/vcblog/2017/09/11/two-phase-name-lookup-support-comes-to-msvc/' target='_blank'>Two phase lookup</a> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2019-02-20T14:21:22+00:00">20.02.19, 14:21</time></span></span><br>
Вот тут еще про это даже посмотреть можно:<br>
<a class='tag-url' href='https://www.youtube.com/watch?v=LZPHrYZ_dBw' target='_blank'>https://www.youtube.com/watch?v=LZPHrYZ_dBw</a> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2019-02-20T14:22:52+00:00">20.02.19, 14:22</time></span></span><br>
Тут по русски можно почитать кусочек: <a class='tag-url' href='https://books.google.ru/books?id=Gn11DwAAQBAJ&pg=PA300&lpg=PA300&dq=c%2B%2B+%D0%B4%D0%B2%D1%83%D1%85%D1%84%D0%B0%D0%B7%D0%BD%D1%8B%D0%B9+%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&source=bl&ots=W9GGGZKRSw&sig=ACfU3U3cxFJe4ava6cr2LL6Ju-j8fxiUrg&hl=ru&sa=X&ved=2ahUKEwjXpYSfwcrgAhWq8aYKHY8ZAFAQ6AEwA3oECAcQAQ#v=onepage&q=c%2B%2B%20%D0%B4%D0%B2%D1%83%D1%85%D1%84%D0%B0%D0%B7%D0%BD%D1%8B%D0%B9%20%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&f=false' target='_blank'>https://books.google.ru/books?id=Gn11DwAAQB...1%D0%BA&f=false</a>]]></description>
        <author>Wound</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414294&amp;view=findpost&amp;p=3790576</guid>
        <pubDate>Wed, 20 Feb 2019 13:41:10 +0000</pubDate>
        <title>CRTP inheritance problem</title>
        <link>https://forum.sources.ru/index.php?showtopic=414294&amp;view=findpost&amp;p=3790576</link>
        <description><![CDATA[AZote: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414294&view=findpost&p=3790573'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Dushevny &#064; <time class="tag-quote__quoted-time" datetime="2019-02-20T12:37:58+00:00">20.02.19, 12:37</time></span><div class='quote '>Надо явно указывать базовый класс:</div></div><br>
А знаете что, с this прокатило<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp;Measure getAverage(uint32_t period) const {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;uint32_t count = std::min(size_t(period/this-&#62;interval), this-&#62;measures.size());</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Measure sum = std::accumulate(this-&#62;measures.rbegin(), this-&#62;measures.rbegin()+(count-1), Measure());</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return sum / count;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div></ol></div></div></div></div><br>
 :blink:]]></description>
        <author>AZote</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414294&amp;view=findpost&amp;p=3790573</guid>
        <pubDate>Wed, 20 Feb 2019 12:37:58 +0000</pubDate>
        <title>CRTP inheritance problem</title>
        <link>https://forum.sources.ru/index.php?showtopic=414294&amp;view=findpost&amp;p=3790573</link>
        <description><![CDATA[Dushevny: Надо явно указывать базовый класс:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Measure current_measure = IntervalMeasurer&#60;IntervalGrowingMeasurer&#60;Measure&#62;, Measure&#62;::measures.back();</div></ol></div></div></div></div>]]></description>
        <author>Dushevny</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414294&amp;view=findpost&amp;p=3790566</guid>
        <pubDate>Wed, 20 Feb 2019 11:38:05 +0000</pubDate>
        <title>CRTP inheritance problem</title>
        <link>https://forum.sources.ru/index.php?showtopic=414294&amp;view=findpost&amp;p=3790566</link>
        <description><![CDATA[AZote: Есть базовый шаблонный класс и его шаблонные наследники:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">template&#60;class Derived, class Measure&#62;</div><div class="code_line">class IntervalMeasurer</div><div class="code_line">{</div><div class="code_line">protected:</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::vector&#60;Measure&#62; measures;</div><div class="code_line">&nbsp;&nbsp; &nbsp;uint32_t interval = 0;</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;void setMeasureInterval(uint32_t measure_interval) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;this-&#62;interval = measure_interval;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;this-&#62;measures.reserve(uint32_t(max_period) / measure_interval);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;void addMeasure(Measure value) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (measures.size() == measures.capacity()) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;measures.erase(measures.begin());</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;measures.push_back(value);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;Measure getAvg1() const {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return static_cast&#60;Derived*&#62;(this)-&#62;getAverage(1*60);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;Measure getAvg5() const {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return static_cast&#60;Derived*&#62;(this)-&#62;getAverage(5*60);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;Measure getAvg15() const {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return static_cast&#60;Derived*&#62;(this)-&#62;getAverage(15*60);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">template&#60;class Measure&#62;</div><div class="code_line">class IntervalInstantMeasurer : public IntervalMeasurer&#60;IntervalInstantMeasurer&#60;Measure&#62;, Measure&#62;</div><div class="code_line">{</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;Measure getAverage(uint32_t period) const {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;uint32_t count = std::min(period/interval, measures.size());</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Measure sum = std::accumulate(measures.rbegin(), measures.rbegin()+(count-1), Measure());</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return sum / count;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">template&#60;class Measure&#62;</div><div class="code_line">class IntervalGrowingMeasurer : public IntervalMeasurer&#60;IntervalGrowingMeasurer&#60;Measure&#62;, Measure&#62;</div><div class="code_line">{</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;Measure getAverage(uint32_t period) const {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;uint32_t count = std::min(period/interval, measures.size());</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (count &#62;= 2) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Measure current_measure = measures.back();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Measure previous_measure = measures[measures.size() - count];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return (current_measure - previous_measure) / period;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return Measure();</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">};</div></ol></div></div></div></div><br>
<br>
Почему компилятор выдает ошибки рода:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">error: ‘interval’ was not declared in this scope</div><div class="code_line">error: ‘measures’ was not declared in this scope</div></ol></div></div></div></div><br>
?  :wall:]]></description>
        <author>AZote</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	