<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" 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/">
  <channel>
    <title>Форум 'C/C++' на RSDN</title>
    <link>http://rsdn.org/Forum/cpp/</link>
    <description>Программирование на C++. No VCL, no MFC, pure C++ only.</description>
    <category>cpp</category>
    <language>ru-ru</language>
    <copyright>Copyright ©, RSDN, 2001-2007</copyright>
    <webMaster>forum@rsdn.org</webMaster>
    <generator>RSDN RSS Generator 1.3</generator>
    <image>
      <url>http://rsdn.org/rsdn.gif</url>
      <title>RSDN</title>
      <link>http://rsdn.org</link>
    </image>
    <lastBuildDate>Mon, 09 Mar 2026 21:16:38 GMT</lastBuildDate>
    <ttl>5</ttl>
	<item>
		<title>Операции сравнения</title>
		<link>http://rsdn.org/Forum/cpp/9060191.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/cpp/9060191</guid>
		<comments>http://rsdn.org/Forum/cpp/9060191</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=9060191</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/9060191</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=9060191</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Вот завели в С++20 операцию трехстороннего сравнения. &lt;br /&gt;
Компилятор при ее реализации в классе генерит на ее основе правильные логические выражения с обычными операция сравнения. &lt;br /&gt;
&lt;br /&gt;
А если трехстороннее сравнение не определено в классе, чего тогда делается ?&lt;br /&gt;
Понятно, что равенство и неравенство можно сгенерить (но и тут есть нюансы). &lt;br /&gt;
А операция МЕНЬШЕ &amp;mdash; генерится ?&lt;br /&gt;
И какой из трех вариантов порядка соблюдается ?&lt;/div&gt;
				
		</description>
		
		<category>cpp</category>
		<pubDate>Thu, 26 Feb 2026 08:47:46 GMT</pubDate>
		
			<author>LaptevVV &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>8</slash:comments>
		
	</item>

	<item>
		<title>Уроки по написанию компилятора на C++</title>
		<link>http://rsdn.org/Forum/cpp/9059612.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/cpp/9059612</guid>
		<comments>http://rsdn.org/Forum/cpp/9059612</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=9059612</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/9059612</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=9059612</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Шесть часов видео для интересующихся основами создания компиляторов.&lt;br /&gt;
&lt;br /&gt;
Юрий Минаев, архитектор компании PVS-Studio, записал 10 практических видеоуроков по написанию компилятора на языке С++. Это компилятор для выдуманного языка, который, впрочем, сильно смахивает на C.&lt;br /&gt;
&lt;br /&gt;
Бесплатные уроки: &lt;a class="m" href="https://pvs-studio.ru/ru/blog/training/courses/davajte-sozdadim-yazyk-programmirovaniya/" target="_blank"&gt;Давайте создадим язык программирования&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Составить впечатление о том, что вас ждёт, поможет эта &lt;a class="m" href="https://vkvideo.ru/video-11805870_456239700" target="_blank"&gt;видеонарезка&lt;/a&gt;.&lt;/div&gt;
				
		</description>
		
		<category>cpp</category>
		<pubDate>Tue, 24 Feb 2026 10:54:56 GMT</pubDate>
		
			<author>Analytic2007 &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>4</slash:comments>
		
	</item>

	<item>
		<title>так компайл тайм рефлекшину быть 26-й стандарт ??</title>
		<link>http://rsdn.org/Forum/cpp/9054555.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/cpp/9054555</guid>
		<comments>http://rsdn.org/Forum/cpp/9054555</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=9054555</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/9054555</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=9054555</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;прогнозы? к какому году, к примеру у мелгкомякгких появится..&lt;/div&gt;
				
		</description>
		
		<category>cpp</category>
		<pubDate>Mon, 09 Feb 2026 03:55:59 GMT</pubDate>
		
			<author>ботаныч &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>6</slash:comments>
		
	</item>

	<item>
		<title>Какие методы логирования из С либы знаете?</title>
		<link>http://rsdn.org/Forum/cpp/9041431.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/cpp/9041431</guid>
		<comments>http://rsdn.org/Forum/cpp/9041431</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=9041431</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/9041431</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=9041431</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Есть С API либа (без классов), которая должна подключаться вообще ко всему, то есть к С# прогам, к свифтным прогамина иос, к андроидным прогам, ну и разумеется винда, линукс, мак. &lt;br /&gt;
Мне надо изнутри либы в кидать оповещения о происходящем в виде строк с описанием. Не просто коды ошибок. Функции сложные и длинные, иногда несколько-поточные. &lt;br /&gt;
&lt;br /&gt;
Как лучше сделать?&lt;br /&gt;
&lt;br /&gt;
Первое что приходит в голову коллбек &amp;mdash; функция со строкой в аргументе. Приложение дает такую функцию и либа ее тянет. &lt;br /&gt;
Второе &amp;mdash; кидать в файл, но этот кажется кривым. Не хочу через файл. &lt;br /&gt;
Как еще можно? Нужно кросс-платформенно и между-языково&lt;/div&gt;
				
		</description>
		
		<category>cpp</category>
		<pubDate>Thu, 08 Jan 2026 06:23:58 GMT</pubDate>
		
			<author>Hоmunculus &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>12</slash:comments>
		
	</item>

	<item>
		<title>Полухин - что там с С++26</title>
		<link>http://rsdn.org/Forum/cpp/9033766.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/cpp/9033766</guid>
		<comments>http://rsdn.org/Forum/cpp/9033766</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=9033766</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/9033766</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=9033766</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Полухин рассказывал о прогрессе с С++26&lt;br /&gt;
правда 1/3 видео звук хреновый&lt;br /&gt;
потом нормальный&lt;br /&gt;
может исправили и перезалили, не проверял, я смотрел до этого онлайн&lt;br /&gt;
&lt;br /&gt;
собственно на что меня задело&lt;br /&gt;
это на вопрос &amp;mdash; почему комитет не сделает форматирование аргументов в С++26 как это сделано в расте или питоне&lt;br /&gt;
ответ Антона &amp;mdash; что то типа, разработчики компиляторов протестуют/бунтуют, короче не хотят, для них это якобы сложно&lt;br /&gt;
&lt;br /&gt;
&lt;a class="lite" href="https://www.youtube.com/watch?v=38WcYF3ubXE" id="38WcYF3ubXE" style="width:640px;height:360px;" target="_blank"&gt;https://www.youtube.com/watch?v=38WcYF3ubXE&lt;/a&gt;&lt;/div&gt;
				
		</description>
		
		<category>cpp</category>
		<pubDate>Wed, 17 Dec 2025 23:07:51 GMT</pubDate>
		
			<author>Великий Мессия &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>47</slash:comments>
		
	</item>

	<item>
		<title>Асинхронщина</title>
		<link>http://rsdn.org/Forum/cpp/9027202.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/cpp/9027202</guid>
		<comments>http://rsdn.org/Forum/cpp/9027202</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=9027202</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/9027202</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=9027202</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;В последнее время рабочие задачи стали сильно мигрировать, условно, с CPU-bound на IO-bound. Приходится миксовать логику и различные сетевые запросы и их ожидания. И чем навороченнее микс, тем больше приходит понимание, что синхронный подход тут начинает буксовать, код становится трудно поддерживать и менять бизнес логику всего этого. Тут вот подумалось, может быть спросить коллег, кто как подходит к IO-bound задачам, где CPU, будем считать для простоты, почти не используется и в основном приходится ждать завершение операций.&lt;br /&gt;
&lt;br /&gt;
Что в идеале хочется получить:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;data = await read(...);
await write(data);&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Понятно, что скорее всего должен быть некий механизм, который следит за завершенными операциями и продолжает выполнение с точки ожидания.&lt;br /&gt;
Как такое можно организовать проще всего? Обязательно нужно кроссплатформенное решение, без погружения в дебри с ассемблером, регистрами и т.л.&lt;br /&gt;
&lt;br /&gt;
Первое что приходит на ум С++20 c безстековыми корутинами. Но это С++20, а я пока на С++17 плотно сижу.&lt;br /&gt;
Можно ли еще как-то в С++17 организовать такой код, можно с колбеками/скрытими колбеками, может быть разбивать код в ручном режиме, но что бы он был более-менее понятен и можно было протаскивать объемный контекст между этой машиной состояний?&lt;br /&gt;
&lt;br /&gt;
Большая просьба по возможности воздержаться от тыканья в готовые библиотеки, в плане бери вот это, там всё уже есть и не думай. Хочется понять основные идеи и подходы, а не максимально быстро начать писать код в продакшене.&lt;br /&gt;
&lt;br /&gt;
Если читаемый подход возможен только в С++20, то придется конечно дрейфовать туда, ничего не поделаешь. &lt;img border='0' width='15' height='15' src='//rsdn.org/Forum/images/frown.gif' /&gt;&lt;/div&gt;
				
		</description>
		
		<category>cpp</category>
		<pubDate>Fri, 05 Dec 2025 21:32:04 GMT</pubDate>
		
			<author>Videoman &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>45</slash:comments>
		
	</item>

	<item>
		<title>std::variant для вложенного класса</title>
		<link>http://rsdn.org/Forum/cpp/9026351.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/cpp/9026351</guid>
		<comments>http://rsdn.org/Forum/cpp/9026351</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=9026351</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/9026351</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=9026351</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Почему некоторые компиляторы это отказываются компилировать ?&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;&lt;span class='kw'&gt;#include&lt;/span&gt; &amp;lt;variant&amp;gt;

&lt;span class='kw'&gt;struct&lt;/span&gt; D
{
    &lt;span class='kw'&gt;struct&lt;/span&gt; FService
    {
        &lt;span class='kw'&gt;int&lt;/span&gt;  nFService_ = 0;
    };

    std::variant&amp;lt;FService&amp;gt; data_;
};

&lt;span class='kw'&gt;int&lt;/span&gt; main() 
{
D d;
&lt;span class='kw'&gt;return&lt;/span&gt; 0;
}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a class="m" href="https://godbolt.org/z/MPK6Gq9Tz" target="_blank"&gt;здесь&lt;/a&gt;&lt;/div&gt;
				
		</description>
		
		<category>cpp</category>
		<pubDate>Wed, 03 Dec 2025 20:05:13 GMT</pubDate>
		
			<author>B0FEE664 &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>27</slash:comments>
		
	</item>

	<item>
		<title>GTest does not officially support dynamic loading</title>
		<link>http://rsdn.org/Forum/cpp/9024544.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/cpp/9024544</guid>
		<comments>http://rsdn.org/Forum/cpp/9024544</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=9024544</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/9024544</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=9024544</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;&lt;blockquote class='q'&gt;&lt;p&gt;Google Test (GTest)&lt;br /&gt;
does not officially support dynamic loading of tests within shared libraries (DLLs) using functions like LoadLibrary(). The problem arises because GTest uses static variables to register tests when the library is loaded, and attempting to unload and reload libraries or running the cleanup code after a library has been unloaded can cause a crash.&lt;/p&gt;&lt;/blockquote&gt;
&lt;br /&gt;
при написании тестов столкнулся с тем что при использовании GTest при вызове LoadLibrary возникает exception&lt;br /&gt;
&lt;br /&gt;
подскажите пожалуйстта реально ли обойти эту проблемму&lt;/div&gt;
				
		</description>
		
		<category>cpp</category>
		<pubDate>Sat, 29 Nov 2025 02:22:07 GMT</pubDate>
		
			<author>sergey2b &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>1</slash:comments>
		
	</item>

	<item>
		<title>cmake 4.2.0 +cpp modules / import std fix</title>
		<link>http://rsdn.org/Forum/cpp/9021254.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/cpp/9021254</guid>
		<comments>http://rsdn.org/Forum/cpp/9021254</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=9021254</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/9021254</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=9021254</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;вышла новая версия cmake 4.2.0&lt;br /&gt;
&lt;a class="m" href="https://discourse.cmake.org/t/cmake-4-2-0-available-for-download/15333" target="_blank"&gt;https://discourse.cmake.org/t/cmake-4-2-0-available-for-download/15333&lt;/a&gt;&lt;br /&gt;
с исправлением для модулей что бы можно было использовать &lt;br /&gt;
import std;&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class='q'&gt;&lt;p&gt;The “CMAKE_CXX_STDLIB_MODULES_JSON” variable was added to set the&lt;br /&gt;
path to the “import std” metadata file for the standard library&lt;br /&gt;
rather than using the compiler to discover its location.&lt;/p&gt;&lt;/blockquote&gt;
&lt;br /&gt;
проблема была в том что зоопарк линукс пакетов&lt;br /&gt;
собирали gcc по разному&lt;br /&gt;
и файл метаданных необходимый для подключения import std&lt;br /&gt;
был в разных локациях линукс фс&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;s&gt;так же проблемы была при использовании&lt;br /&gt;
clang под виндовс с msvc stl&lt;br /&gt;
поскольку для clang была поддержка только кланговского stl&lt;br /&gt;
и он не находил файл метаданных с msvc stl&lt;br /&gt;
&lt;/s&gt;&lt;br /&gt;
проверил, это не пофиксили&lt;br /&gt;
upd &lt;br /&gt;
оказывается проблема более глобальная&lt;br /&gt;
у каждого компиля свой формат json метаданных&lt;br /&gt;
и если clang/gcc еще кое как сходятся&lt;br /&gt;
то у msvc свой&lt;br /&gt;
поэтому cmake разрабы играются со своим парсером и пытаются стандартизировать формат метаданных&lt;br /&gt;
&lt;a class="m" href="https://gitlab.kitware.com/cmake/cmake/-/merge_requests/11422" target="_blank"&gt;https://gitlab.kitware.com/cmake/cmake/-/merge_requests/11422&lt;/a&gt;&lt;br /&gt;
&lt;a class="github m" href="https://github.com/ecostd/rfcs/pull/3" target="_blank"&gt;https://github.com/ecostd/rfcs/pull/3&lt;/a&gt;&lt;br /&gt;
upd2&lt;br /&gt;
пофиксил для cmake 4.2.0 что бы работал clang под виндовс c import std;&lt;br /&gt;
&lt;img border='0' width='26' height='28' src='//rsdn.org/Forum/images/super.gif' /&gt;&lt;br /&gt;
&lt;br /&gt;
следующая версия cmake 4.3.0 зарелизится не ранее февраля 2026&lt;/div&gt;
				
		</description>
		
		<category>cpp</category>
		<pubDate>Thu, 20 Nov 2025 21:50:41 GMT</pubDate>
		
			<author>Великий Мессия &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>21</slash:comments>
		
	</item>

	<item>
		<title>тянут в кланг и стандарт strong typedef</title>
		<link>http://rsdn.org/Forum/cpp/9020997.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/cpp/9020997</guid>
		<comments>http://rsdn.org/Forum/cpp/9020997</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=9020997</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/9020997</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=9020997</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;&lt;a class="m" href="https://discourse.llvm.org/t/rfc-clang-adding-strong-typedefs/88843" target="_blank"&gt;https://discourse.llvm.org/t/rfc-clang-adding-strong-typedefs/88843&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
ех! хотят классную штуку попробовать в кланге и протянуть в стандарт&lt;br /&gt;
сейчас для этого приходиться говнокодить тип врапер обертку&lt;br /&gt;
хотя иногда можно и из буста поюзать&lt;br /&gt;
но накладно по сравнению с предлагаемым вариантом&lt;/div&gt;
				
		</description>
		
		<category>cpp</category>
		<pubDate>Thu, 20 Nov 2025 12:27:56 GMT</pubDate>
		
			<author>Великий Мессия &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>40</slash:comments>
		
	</item>

	<item>
		<title>friend</title>
		<link>http://rsdn.org/Forum/cpp/9018650.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/cpp/9018650</guid>
		<comments>http://rsdn.org/Forum/cpp/9018650</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=9018650</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/9018650</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=9018650</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Как считаете &amp;mdash; friend это костыль для кривой архитектуры или норм?&lt;/div&gt;
				
		</description>
		
		<category>cpp</category>
		<pubDate>Sat, 15 Nov 2025 02:14:32 GMT</pubDate>
		
			<author>Hоmunculus &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>24</slash:comments>
		
	</item>

	<item>
		<title>а давайте напишем новый asio !</title>
		<link>http://rsdn.org/Forum/cpp/9014047.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/cpp/9014047</guid>
		<comments>http://rsdn.org/Forum/cpp/9014047</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=9014047</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/9014047</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=9014047</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;любопытный флем на эту тему разгорелся в рассылке буста в августе(сейчас затух)&lt;br /&gt;
&lt;br /&gt;
&lt;a class="m" href="https://lists.boost.org/archives/list/boost@lists.boost.org/thread/MOZF2IYK4B6DAEGOTP5IEGNSOQ5BPH75/" target="_blank"&gt;https://lists.boost.org/archives/list/boost@lists.boost.org/thread/MOZF2IYK4B6DAEGOTP5IEGNSOQ5BPH75/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
вообщем автор asio слишком звездный или у него руки и ноги связаны nda&lt;br /&gt;
поэтому он ни с кем не общается в опенсорс комюнити&lt;br /&gt;
и известный фалько, предлагает форкнуть asio&lt;/div&gt;
				
		</description>
		
		<category>cpp</category>
		<pubDate>Mon, 03 Nov 2025 23:34:01 GMT</pubDate>
		
			<author>Великий Мессия &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>71</slash:comments>
		
	</item>

	<item>
		<title>Ушел из жизни Райнер Гримм</title>
		<link>http://rsdn.org/Forum/cpp/9014046.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/cpp/9014046</guid>
		<comments>http://rsdn.org/Forum/cpp/9014046</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=9014046</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/9014046</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=9014046</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;&lt;a class="m" href="https://www.modernescpp.com/index.php/my-als-journey-31-31-the-end/" target="_blank"&gt;https://www.modernescpp.com/index.php/my-als-journey-31-31-the-end/&lt;/a&gt;&lt;br /&gt;
месяц назад ушел из жизни автор известного издания о конкурсенси в С++&lt;br /&gt;
&lt;a class="m" href="https://www.modernescpp.org/concurrency-with-modern-cpp/" target="_blank"&gt;https://www.modernescpp.org/concurrency-with-modern-cpp/&lt;/a&gt;&lt;/div&gt;
				
		</description>
		
		<category>cpp</category>
		<pubDate>Mon, 03 Nov 2025 23:29:56 GMT</pubDate>
		
			<author>Великий Мессия &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>3</slash:comments>
		
	</item>

	<item>
		<title>std::get(std::variant)</title>
		<link>http://rsdn.org/Forum/cpp/9008747.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/cpp/9008747</guid>
		<comments>http://rsdn.org/Forum/cpp/9008747</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=9008747</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/9008747</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=9008747</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Здравствуйте!&lt;br /&gt;
&lt;br /&gt;
Я тут начал довольно активно пользоваться std::variant, и часто возникает задача &amp;mdash; узнать, что там во варианте лежит. Также возникает задача получить лежащее там значение.&lt;br /&gt;
&lt;br /&gt;
Мне не нравится то, что std::get принимает std::size_t индекс, а std::variant::index() возвращает std::size_t, а std::holds_alternative принимает тип.&lt;br /&gt;
&lt;br /&gt;
Я каждый раз для каждого variant делаю перечисление enum class, если мой variant &amp;mdash; MyVariant, то перечисление &amp;mdash; MyVariantKind. Имена альтернатив там в одном порядке. Пишу функцию GetKind и вроде норм. Пока было нужно всего несколько раз, и руками было достаточно просто. Но вообще идея мне понравилась, и я подумал, как бы это дело сделать совместимым с std.&lt;br /&gt;
&lt;br /&gt;
Захотелось:&lt;br /&gt;
1) поиметь функцию типа std::index (которой на самом деле вроде нет), которая для variant'а вызывает его index() и кастит к моему enum &amp;mdash; что тут лучше придумать? Или есть что-то такое, просто я не в курсе?&lt;br /&gt;
2) аналог std::get. Кстати, я что-то всегда вызываю std::get, но, по идее, тут должен работать просто get через ADL, и я могу написать свою пачку перегрузок get в том же NS, где и variant, и всё будет работать просто через вызов get, так?&lt;br /&gt;
3) holds_alternative, которая принимает variantKind и variant, и возвращает bool &amp;mdash; тут по идее, так же как с get&lt;br /&gt;
4) get_if &amp;mdash; ну это уже на базе остального делается, вроде&lt;br /&gt;
&lt;br /&gt;
Как это всё лучше по красоте сделать?&lt;br /&gt;
&lt;br /&gt;
ЗЫ Думаю запилить какой-нить генератор кода, который бы мне всю красоту генерил по простецкому описанию, и мой Variant, и VariantKind&lt;br /&gt;
&lt;br /&gt;
ЗЗЫ Приглашается в тему Евгений Музыченко с примером своего compile-time скрипта на его гипотетическом диалекте C++, в котором есть МАКРОСЫ. Каким ему видится решение подобной задачи? Хочу почитать код такого решения.&lt;br /&gt;
&lt;br /&gt;
ЗЗЗЫ А как variant может стать value less? И как это можно продетектить? Это из-за исключений может получиться, или есть другие способы?&lt;/div&gt;
				
		</description>
		
		<category>cpp</category>
		<pubDate>Wed, 22 Oct 2025 20:20:12 GMT</pubDate>
		
			<author>Marty &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>48</slash:comments>
		
	</item>

	<item>
		<title>std::advance</title>
		<link>http://rsdn.org/Forum/cpp/9006267.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/cpp/9006267</guid>
		<comments>http://rsdn.org/Forum/cpp/9006267</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=9006267</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/9006267</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=9006267</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Здравствуйте!&lt;br /&gt;
&lt;br /&gt;
Почему std::advance не возвращает инкрементированный итератор, а инкрементирует его по ссылке на него?&lt;br /&gt;
&lt;br /&gt;
Неудобно же блин, кучу телодвижений надо делать. Использую не слишком часто, поэтому ещё не привык и каждый раз плююсь.&lt;br /&gt;
&lt;br /&gt;
Ну ладно, окей, может быть какие-то итераторы не копируются, или их копирование тяжёлое, а по ссылке всегда сработает оптимально. Но можно же было например сделать либо std::advance, который возвращает инкрементированное значение, и std::advance_inplace &amp;mdash; обновляет по ссылке. Или &amp;mdash; std::advance &amp;mdash; работает по ссылке, а std::advance_copy &amp;mdash; возвращает инкрементированную копию.&lt;br /&gt;
&lt;br /&gt;
А я уж сам бы решил, inplace мне инкрементировать, или получать инкрементированную копию?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
И да, немножко диссонанс с парной функцией std::distance, которая возвращает новое значение. Так-то понятно, что std::distance никак не может работать по ссылке, но могли бы std::advance сделать с аналогичной семантикой&lt;/div&gt;
				
		</description>
		
		<category>cpp</category>
		<pubDate>Wed, 15 Oct 2025 20:18:35 GMT</pubDate>
		
			<author>Marty &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>7</slash:comments>
		
	</item>

	<item>
		<title>const&amp;</title>
		<link>http://rsdn.org/Forum/cpp/9003327.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/cpp/9003327</guid>
		<comments>http://rsdn.org/Forum/cpp/9003327</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=9003327</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/9003327</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=9003327</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Опять что-то перемудрили в стандарте или я неправильно понимаю ссылочные квалификаторы у методов класса?&lt;br /&gt;
Обнаружил падение у себя в коде. В сухом остатке вот выжимка. &lt;a class="m" href="https://godbolt.org/z/TqoMKc9Pr" target="_blank"&gt;Код&lt;/a&gt; содержит undefined behavior. &lt;pre class='c'&gt;&lt;code&gt;&lt;span class='kw'&gt;class&lt;/span&gt; nested_class 
{
&lt;span class='kw'&gt;public&lt;/span&gt;:
   &lt;span class='kw'&gt;int&lt;/span&gt; get() &lt;span class='kw'&gt;const&lt;/span&gt; { &lt;span class='kw'&gt;return&lt;/span&gt; m_member; };

&lt;span class='kw'&gt;private&lt;/span&gt;:
    &lt;span class='kw'&gt;int&lt;/span&gt; m_member = 0;
};

&lt;span class='kw'&gt;class&lt;/span&gt; holder_class
{
&lt;span class='kw'&gt;public&lt;/span&gt;:

    &lt;span class='kw'&gt;template&lt;/span&gt;&amp;lt;&lt;span class='kw'&gt;typename&lt;/span&gt; type_t&amp;gt;
    &lt;span class='kw'&gt;const&lt;/span&gt; nested_class&amp;amp; get() &lt;span class='kw'&gt;const&lt;/span&gt;&amp;amp; { &lt;span class='kw'&gt;return&lt;/span&gt; m_member; }
    
&lt;span class='kw'&gt;private&lt;/span&gt;:

    nested_class m_member;
};


&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;const&lt;/span&gt; nested_class&amp;amp; nested = holder_class().get&amp;lt;&lt;span class='kw'&gt;int&lt;/span&gt;&amp;gt;(); &lt;span class='com'&gt;// UB&lt;/span&gt;

    &lt;span class='kw'&gt;return&lt;/span&gt; nested.get();
}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
В оправдании себя: думал что 'const&amp;amp;' квалификатор метода класса убережет меня от вызова метода у временного объекта. Но не уберегло, не фортануло. Стандарт позволяет вызвать метод у временного константного объекта. Дальше масса объяснений зачем это, что ссылка константная и она продлевается и это безопасно и бла-бла-бла. Во у меня рабочий пример и таки приведение оказалось не безопасным. Понятно, что можно добавить метод &lt;pre class='c'&gt;&lt;code&gt;&lt;span class='kw'&gt;template&lt;/span&gt;&amp;lt;&lt;span class='kw'&gt;typename&lt;/span&gt; type_t&amp;gt;
nested_class get() &lt;span class='kw'&gt;const&lt;/span&gt;&amp;amp;&amp;amp; = &lt;span class='kw'&gt;delete&lt;/span&gt;;&lt;/code&gt;&lt;/pre&gt; и всё будет работать как задумано. Но почему такое поведение по умолчанию, где я ошибся в своей логике-реализации ?&lt;/div&gt;
				
		</description>
		
		<category>cpp</category>
		<pubDate>Fri, 10 Oct 2025 08:25:02 GMT</pubDate>
		
			<author>Videoman &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>13</slash:comments>
		
	</item>

	<item>
		<title>Awesome-cpp</title>
		<link>http://rsdn.org/Forum/cpp/9003257.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/cpp/9003257</guid>
		<comments>http://rsdn.org/Forum/cpp/9003257</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=9003257</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/9003257</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=9003257</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Кто еще не знает &amp;mdash; там есть очень много всего&lt;br /&gt;
&lt;a class="github m" href="https://github.com/fffaraz/awesome-cpp" target="_blank"&gt;https://github.com/fffaraz/awesome-cpp&lt;/a&gt;&lt;/div&gt;
				
		</description>
		
		<category>cpp</category>
		<pubDate>Fri, 10 Oct 2025 04:50:07 GMT</pubDate>
		
			<author>LaptevVV &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>6</slash:comments>
		
	</item>

	<item>
		<title>Placement new для инициализации примитивного типа в самодельном union?</title>
		<link>http://rsdn.org/Forum/cpp/9000080.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/cpp/9000080</guid>
		<comments>http://rsdn.org/Forum/cpp/9000080</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=9000080</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/9000080</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=9000080</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Доброго времени суток!&lt;br /&gt;
&lt;br /&gt;
Нужна консультация от людей, которые знают формальную часть C++ лучше меня.&lt;br /&gt;
&lt;br /&gt;
Делаю самодельный аналог union/variant. Что-то типа:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;&lt;span class='kw'&gt;using&lt;/span&gt; void_ptr_t = &lt;span class='kw'&gt;void&lt;/span&gt; *;

&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; my_union_t
{
    alignas( std::max( alignof(T), alignof(void_ptr_t) ) )
    std::array&amp;lt; std::byte, std::max( &lt;span class='kw'&gt;sizeof&lt;/span&gt;(T), &lt;span class='kw'&gt;sizeof&lt;/span&gt;(void_ptr_t) ) &amp;gt; _content;

};&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Т.е. это такое специализированное хранилище, в котором может быть либо экземпляр типа T, либо же указатель.&lt;br /&gt;
Либо вообще может ничего не быть, но это к делу не относится.&lt;br /&gt;
&lt;br /&gt;
Важно то, что в качестве T может быть нетривиальный тип со своими конструкторами и деструктором. Вроде std::string или std::vector.&lt;br /&gt;
&lt;br /&gt;
Когда мне нужно поместить в my_union_t::_content значение типа T, то естественным образом используется placement new:&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;&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;void&lt;/span&gt;
store_to( my_union_t&amp;lt;T&amp;gt; &amp;amp; dest, T value )
{
  &lt;span class='kw'&gt;new&lt;/span&gt;( dest._content.data() ) T{ std::move(value) };
}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Но вот нужен ли с формальной точки зрения placement new когда мне требуется туда сохранить значение указателя?&lt;br /&gt;
Т.е. должен ли я писать так:&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;&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;void&lt;/span&gt;
store_to( my_union_t&amp;lt;T&amp;gt; &amp;amp; dest, void_ptr_t value )
{
  &lt;span class='kw'&gt;new&lt;/span&gt;( dest._content.data() ) void_ptr_t{ value };
}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
или же вполне достаточно и reinterpret_cast:&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;&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;void&lt;/span&gt;
store_to( my_union_t&amp;lt;T&amp;gt; &amp;amp; dest, void_ptr_t value )
{
  *(&lt;span class='kw'&gt;reinterpret_cast&lt;/span&gt;&amp;lt;void_ptr_t **&amp;gt;(dest._content.data())) = value;
}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
?&lt;br /&gt;
&lt;br /&gt;
Оно как бы понятно, что современные компиляторы без проблем возьмут и версию с reinterpret_cast. Но хочется понять, насколько это легально.&lt;br /&gt;
&lt;br /&gt;
Сам думаю, что легальной является только версия с placement new и для T, и для void_ptr_t. Однако, не мешало бы получить какие-то подтверждения от знающих людей, чтобы быть уверенным.&lt;br /&gt;
&lt;br /&gt;
PS. Вопрос о том, почему бы не взять std::variant выходит за рамки обсуждения, есть на то причины. Если брать обычный унаследованный из Си union, то для случаев, когда T является нетривиальным типом (вроде std::string) там свои заморочки, которые не делают код более понятным, скорее даже наоборот.&lt;br /&gt;
PPS. Про то, что для my_union_t нужны функции очистки содержимого и соответствующие процедуры для копирования/перемещения/swap я в курсе.&lt;/div&gt;
				
		</description>
		
		<category>cpp</category>
		<pubDate>Thu, 02 Oct 2025 08:59:40 GMT</pubDate>
		
			<author>so5team &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>27</slash:comments>
		
	</item>

	<item>
		<title>Про модули</title>
		<link>http://rsdn.org/Forum/cpp/8986110.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/cpp/8986110</guid>
		<comments>http://rsdn.org/Forum/cpp/8986110</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8986110</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8986110</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8986110</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;&lt;a class="m" href="https://chuanqixu9.github.io/c++/2025/08/14/C++20-Modules.en.html" target="_blank"&gt;https://chuanqixu9.github.io/c++/2025/08/14/C++20-Modules.en.html&lt;/a&gt;&lt;br /&gt;
&lt;blockquote class='q'&gt;&lt;p&gt;Build System&lt;br /&gt;
How much compile time can C++20 Modules save?&lt;br /&gt;
Are C++20 Modules and PCH equivalent? What’s the difference?&lt;br /&gt;
Can C++20 Modules reduce code size? Why?&lt;br /&gt;
Can we use C++20 Modules for programming now?&lt;br /&gt;
But what’s the cost?&lt;br /&gt;
When to use C++20 Modules&lt;br /&gt;
Modules Wrapper&lt;br /&gt;
export-using style&lt;br /&gt;
extern “C++” style&lt;br /&gt;
Choose a specific suffix for your wrapped third-party libraries to avoid conflicts&lt;br /&gt;
One big thirdparty module&lt;br /&gt;
Use .cppm and other special suffixes as the filename suffix for importable module units&lt;br /&gt;
How do C++20 Modules reduce compile time?&lt;br /&gt;
Frontend and Compile-Time Computation&lt;br /&gt;
Mid-end and Back-end&lt;br /&gt;
Negative impacts of Modules on compile speed&lt;br /&gt;
Recompilation issues from modifying interface files&lt;br /&gt;
Other uses for Module Implementation Partition Units&lt;br /&gt;
Non-Cascading Changes&lt;br /&gt;
Try to avoid placing the same declaration in different TUs&lt;br /&gt;
Mixing import and #include&lt;br /&gt;
Impact of Modules on code size&lt;br /&gt;
Runtime issues encountered during module migration&lt;br /&gt;
Forward declaration issues in Modules&lt;br /&gt;
TODO?&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;
				
		</description>
		
		<category>cpp</category>
		<pubDate>Wed, 03 Sep 2025 05:18:32 GMT</pubDate>
		
			<author>LaptevVV &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>3</slash:comments>
		
	</item>

	<item>
		<title>Одна функция для разных типов</title>
		<link>http://rsdn.org/Forum/cpp/8982910.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/cpp/8982910</guid>
		<comments>http://rsdn.org/Forum/cpp/8982910</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8982910</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8982910</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8982910</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Две функции выполняют одно и тоже, различаются по типам.&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;&lt;span class='kw'&gt;void&lt;/span&gt; search(&lt;span class='kw'&gt;const char&lt;/span&gt;* mask)
{
    _finddata_t fd;
    _findfirst(mask, &amp;amp;fd);
}
&lt;span class='kw'&gt;void&lt;/span&gt; wsearch(&lt;span class='kw'&gt;const wchar_t&lt;/span&gt;* mask)
{
    _wfinddata_t fd;
    _wfindfirst(mask, &amp;amp;fd);
}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Можно ли объединить в одну функцию (или шаблон)? Хочется следующее:&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;asearch(&lt;span class='str'&gt;"*.txt"&lt;/span&gt;);    &lt;span class='com'&gt;// выполняется search &lt;/span&gt;
asearch(L&lt;span class='str'&gt;"*.txt"&lt;/span&gt;);    &lt;span class='com'&gt;// выполняется wsearch&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Спасибо!&lt;/div&gt;
				
		</description>
		
		<category>cpp</category>
		<pubDate>Mon, 25 Aug 2025 15:40:54 GMT</pubDate>
		
			<author>Su34 &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>7</slash:comments>
		
	</item>
</channel>
</rss>
