#wg21 — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #wg21, aggregated by home.social.
-
Что нового в C++29: итоги июньской встречи в Брно
13 июня закончилась встреча комитета по стандартизации C++ (также известного как WG21 ) в Брно (Чехия), на которой комитет работал над будущим стандартом C++, C++29. В этой статье кратко пересказаны все принятые в него нововведения с примерами их использования и ссылками на оригинальные пропозалы для тех, кто захочет познакомиться с ними детально.
-
Что нового в C++29: итоги июньской встречи в Брно
13 июня закончилась встреча комитета по стандартизации C++ (также известного как WG21 ) в Брно (Чехия), на которой комитет работал над будущим стандартом C++, C++29. В этой статье кратко пересказаны все принятые в него нововведения с примерами их использования и ссылками на оригинальные пропозалы для тех, кто захочет познакомиться с ними детально.
-
Что нового в C++29: итоги июньской встречи в Брно
13 июня закончилась встреча комитета по стандартизации C++ (также известного как WG21 ) в Брно (Чехия), на которой комитет работал над будущим стандартом C++, C++29. В этой статье кратко пересказаны все принятые в него нововведения с примерами их использования и ссылками на оригинальные пропозалы для тех, кто захочет познакомиться с ними детально.
-
@mhoemmen mdspan feature request 😉:
Allow mdspan::operator[] with one argument less than rank.
Mandates/Constraints: The resulting range is contiguous in memory.
Returns: A span (of static extent, if possible).Then I can use std::simd CTAD from range:
simd::basic_vec(B[k], simd::flag_aligned);instead of:
simd::unchecked_load<simd::vec<T, N>>(&B[k, 0], &B[k, N-1], simd::flag_aligned);The former is not only simpler but also safer.
-
@mhoemmen mdspan feature request 😉:
Allow mdspan::operator[] with one argument less than rank.
Mandates/Constraints: The resulting range is contiguous in memory.
Returns: A span (of static extent, if possible).Then I can use std::simd CTAD from range:
simd::basic_vec(B[k], simd::flag_aligned);instead of:
simd::unchecked_load<simd::vec<T, N>>(&B[k, 0], &B[k, N-1], simd::flag_aligned);The former is not only simpler but also safer.
-
@mhoemmen mdspan feature request 😉:
Allow mdspan::operator[] with one argument less than rank.
Mandates/Constraints: The resulting range is contiguous in memory.
Returns: A span (of static extent, if possible).Then I can use std::simd CTAD from range:
simd::basic_vec(B[k], simd::flag_aligned);instead of:
simd::unchecked_load<simd::vec<T, N>>(&B[k, 0], &B[k, N-1], simd::flag_aligned);The former is not only simpler but also safer.
-
@mhoemmen mdspan feature request 😉:
Allow mdspan::operator[] with one argument less than rank.
Mandates/Constraints: The resulting range is contiguous in memory.
Returns: A span (of static extent, if possible).Then I can use std::simd CTAD from range:
simd::basic_vec(B[k], simd::flag_aligned);instead of:
simd::unchecked_load<simd::vec<T, N>>(&B[k, 0], &B[k, N-1], simd::flag_aligned);The former is not only simpler but also safer.
-
@mhoemmen mdspan feature request 😉:
Allow mdspan::operator[] with one argument less than rank.
Mandates/Constraints: The resulting range is contiguous in memory.
Returns: A span (of static extent, if possible).Then I can use std::simd CTAD from range:
simd::basic_vec(B[k], simd::flag_aligned);instead of:
simd::unchecked_load<simd::vec<T, N>>(&B[k, 0], &B[k, N-1], simd::flag_aligned);The former is not only simpler but also safer.
-
On my way back from #WG21 in Croydon/London. #cpp26 is done. Notable change that I got through: You don't have to wonder anymore what difference there is between `constant_arg` and `constant_wrapper`. Only the latter remains. And `constant_wrapper` now works as a function-wrapper, too (passing a callable as constant expression via function argument).
And—somewhat sad—but `simd::vec<float>(...) * 2` won't compile anymore. I'll have to update GCC16 accordingly. -
On my way back from #WG21 in Croydon/London. #cpp26 is done. Notable change that I got through: You don't have to wonder anymore what difference there is between `constant_arg` and `constant_wrapper`. Only the latter remains. And `constant_wrapper` now works as a function-wrapper, too (passing a callable as constant expression via function argument).
And—somewhat sad—but `simd::vec<float>(...) * 2` won't compile anymore. I'll have to update GCC16 accordingly. -
On my way back from #WG21 in Croydon/London. #cpp26 is done. Notable change that I got through: You don't have to wonder anymore what difference there is between `constant_arg` and `constant_wrapper`. Only the latter remains. And `constant_wrapper` now works as a function-wrapper, too (passing a callable as constant expression via function argument).
And—somewhat sad—but `simd::vec<float>(...) * 2` won't compile anymore. I'll have to update GCC16 accordingly. -
On my way back from #WG21 in Croydon/London. #cpp26 is done. Notable change that I got through: You don't have to wonder anymore what difference there is between `constant_arg` and `constant_wrapper`. Only the latter remains. And `constant_wrapper` now works as a function-wrapper, too (passing a callable as constant expression via function argument).
And—somewhat sad—but `simd::vec<float>(...) * 2` won't compile anymore. I'll have to update GCC16 accordingly. -
On my way back from #WG21 in Croydon/London. #cpp26 is done. Notable change that I got through: You don't have to wonder anymore what difference there is between `constant_arg` and `constant_wrapper`. Only the latter remains. And `constant_wrapper` now works as a function-wrapper, too (passing a callable as constant expression via function argument).
And—somewhat sad—but `simd::vec<float>(...) * 2` won't compile anymore. I'll have to update GCC16 accordingly. -
The first part of std::simd just landed in #GCC 16: https://forge.sourceware.org/gcc/gcc-mirror/commit/8be0893fd98c9a89bbcd81e0ff8ebae60841d062
Expect it on Compiler Explorer in — I guess — 12 hours. -
The first part of std::simd just landed in #GCC 16: https://forge.sourceware.org/gcc/gcc-mirror/commit/8be0893fd98c9a89bbcd81e0ff8ebae60841d062
Expect it on Compiler Explorer in — I guess — 12 hours. -
The first part of std::simd just landed in #GCC 16: https://forge.sourceware.org/gcc/gcc-mirror/commit/8be0893fd98c9a89bbcd81e0ff8ebae60841d062
Expect it on Compiler Explorer in — I guess — 12 hours. -
The first part of std::simd just landed in #GCC 16: https://forge.sourceware.org/gcc/gcc-mirror/commit/8be0893fd98c9a89bbcd81e0ff8ebae60841d062
Expect it on Compiler Explorer in — I guess — 12 hours. -
The first part of std::simd just landed in #GCC 16: https://forge.sourceware.org/gcc/gcc-mirror/commit/8be0893fd98c9a89bbcd81e0ff8ebae60841d062
Expect it on Compiler Explorer in — I guess — 12 hours. -
What's the constexpr-if equivalent to `condition ? x : y`? As far as I know we only have `[&] { if constexpr (condition) return x; else return y; }()`. I hate it.
-
What's the constexpr-if equivalent to `condition ? x : y`? As far as I know we only have `[&] { if constexpr (condition) return x; else return y; }()`. I hate it.
-
What's the constexpr-if equivalent to `condition ? x : y`? As far as I know we only have `[&] { if constexpr (condition) return x; else return y; }()`. I hate it.
-
What's the constexpr-if equivalent to `condition ? x : y`? As far as I know we only have `[&] { if constexpr (condition) return x; else return y; }()`. I hate it.
-
What's the constexpr-if equivalent to `condition ? x : y`? As far as I know we only have `[&] { if constexpr (condition) return x; else return y; }()`. I hate it.
-
Can we fix the following inconsistency in #CPlusPlus: https://compiler-explorer.com/z/qsYeTncE4? A conversion operator is sufficient to call wrapped function pointers. But it does not work for wrapped callable objects. And that's even though `wrapper` in the above example has the callable type in its associated namespaces (ADL). ADL was introduced to make operators work. I patched my #GCC to make it work and I like it.
-
Can we fix the following inconsistency in #CPlusPlus: https://compiler-explorer.com/z/qsYeTncE4? A conversion operator is sufficient to call wrapped function pointers. But it does not work for wrapped callable objects. And that's even though `wrapper` in the above example has the callable type in its associated namespaces (ADL). ADL was introduced to make operators work. I patched my #GCC to make it work and I like it.
-
Can we fix the following inconsistency in #CPlusPlus: https://compiler-explorer.com/z/qsYeTncE4? A conversion operator is sufficient to call wrapped function pointers. But it does not work for wrapped callable objects. And that's even though `wrapper` in the above example has the callable type in its associated namespaces (ADL). ADL was introduced to make operators work. I patched my #GCC to make it work and I like it.
-
Can we fix the following inconsistency in #CPlusPlus: https://compiler-explorer.com/z/qsYeTncE4? A conversion operator is sufficient to call wrapped function pointers. But it does not work for wrapped callable objects. And that's even though `wrapper` in the above example has the callable type in its associated namespaces (ADL). ADL was introduced to make operators work. I patched my #GCC to make it work and I like it.
-
Can we fix the following inconsistency in #CPlusPlus: https://compiler-explorer.com/z/qsYeTncE4? A conversion operator is sufficient to call wrapped function pointers. But it does not work for wrapped callable objects. And that's even though `wrapper` in the above example has the callable type in its associated namespaces (ADL). ADL was introduced to make operators work. I patched my #GCC to make it work and I like it.
-
I wrote a #WG21 Kona 2025 trip report:
https://mattkretz.github.io/2025/11/13/WG21-Kona-2025-trip-report.html -
I wrote a #WG21 Kona 2025 trip report:
https://mattkretz.github.io/2025/11/13/WG21-Kona-2025-trip-report.html -
I wrote a #WG21 Kona 2025 trip report:
https://mattkretz.github.io/2025/11/13/WG21-Kona-2025-trip-report.html -
I wrote a #WG21 Kona 2025 trip report:
https://mattkretz.github.io/2025/11/13/WG21-Kona-2025-trip-report.html -
I wrote a #WG21 Kona 2025 trip report:
https://mattkretz.github.io/2025/11/13/WG21-Kona-2025-trip-report.html -
Last week meant survival mode. Attending the #WG21 meeting in Kona, Hawaii *virtually* meant Zoom sessions from 19:00–04:00. With family in the house, some of them sick, my priority was 1. not getting sick 2. getting the work done. So no 🏊🚴🏃 last week.
1/1
-
Last week meant survival mode. Attending the #WG21 meeting in Kona, Hawaii *virtually* meant Zoom sessions from 19:00–04:00. With family in the house, some of them sick, my priority was 1. not getting sick 2. getting the work done. So no 🏊🚴🏃 last week.
1/1
-
Last week meant survival mode. Attending the #WG21 meeting in Kona, Hawaii *virtually* meant Zoom sessions from 19:00–04:00. With family in the house, some of them sick, my priority was 1. not getting sick 2. getting the work done. So no 🏊🚴🏃 last week.
1/1
-
Immediate escalating expressions promote constexpr functions to immediate functions. 👍 Now, can I get a partially promoted half-immediate function instead? 😢
-
Immediate escalating expressions promote constexpr functions to immediate functions. 👍 Now, can I get a partially promoted half-immediate function instead? 😢
-
Immediate escalating expressions promote constexpr functions to immediate functions. 👍 Now, can I get a partially promoted half-immediate function instead? 😢
-
I read https://www.open-std.org/JTC1/SC22/WG21/docs/papers/2025/p3802r0.pdf "Poor Functions" last night. I jumped for joy! 😆 Finally, I had words for what I was thinking all this time. This __local_ctx idea puts into words what I wanted to say with regard to #FunctionMultiVersioning (https://gcc.gnu.org/wiki/FunctionMultiVersioning). I need to be able to reflect on those attributes in order to make SIMD types and functions behave correctly in the context of FMV. __local_ctx producing a std::meta::info sounds like the solution!
-
I read https://www.open-std.org/JTC1/SC22/WG21/docs/papers/2025/p3802r0.pdf "Poor Functions" last night. I jumped for joy! 😆 Finally, I had words for what I was thinking all this time. This __local_ctx idea puts into words what I wanted to say with regard to #FunctionMultiVersioning (https://gcc.gnu.org/wiki/FunctionMultiVersioning). I need to be able to reflect on those attributes in order to make SIMD types and functions behave correctly in the context of FMV. __local_ctx producing a std::meta::info sounds like the solution!
-
I read https://www.open-std.org/JTC1/SC22/WG21/docs/papers/2025/p3802r0.pdf "Poor Functions" last night. I jumped for joy! 😆 Finally, I had words for what I was thinking all this time. This __local_ctx idea puts into words what I wanted to say with regard to #FunctionMultiVersioning (https://gcc.gnu.org/wiki/FunctionMultiVersioning). I need to be able to reflect on those attributes in order to make SIMD types and functions behave correctly in the context of FMV. __local_ctx producing a std::meta::info sounds like the solution!
-
I read https://www.open-std.org/JTC1/SC22/WG21/docs/papers/2025/p3802r0.pdf "Poor Functions" last night. I jumped for joy! 😆 Finally, I had words for what I was thinking all this time. This __local_ctx idea puts into words what I wanted to say with regard to #FunctionMultiVersioning (https://gcc.gnu.org/wiki/FunctionMultiVersioning). I need to be able to reflect on those attributes in order to make SIMD types and functions behave correctly in the context of FMV. __local_ctx producing a std::meta::info sounds like the solution!
-
I read https://www.open-std.org/JTC1/SC22/WG21/docs/papers/2025/p3802r0.pdf "Poor Functions" last night. I jumped for joy! 😆 Finally, I had words for what I was thinking all this time. This __local_ctx idea puts into words what I wanted to say with regard to #FunctionMultiVersioning (https://gcc.gnu.org/wiki/FunctionMultiVersioning). I need to be able to reflect on those attributes in order to make SIMD types and functions behave correctly in the context of FMV. __local_ctx producing a std::meta::info sounds like the solution!
-
There's resistance against using the same name in a namespace and a type inside that namespace. Why? What is the actual problem with this code? Is the 'foo::foo' looking too much like a constructor definition (in that context)? Isn't it great how the call to 'bar' has a clear relation to 'foo'?
Why is it considered bad practice that shouldn't pass code review? -
There's resistance against using the same name in a namespace and a type inside that namespace. Why? What is the actual problem with this code? Is the 'foo::foo' looking too much like a constructor definition (in that context)? Isn't it great how the call to 'bar' has a clear relation to 'foo'?
Why is it considered bad practice that shouldn't pass code review? -
There's resistance against using the same name in a namespace and a type inside that namespace. Why? What is the actual problem with this code? Is the 'foo::foo' looking too much like a constructor definition (in that context)? Isn't it great how the call to 'bar' has a clear relation to 'foo'?
Why is it considered bad practice that shouldn't pass code review? -
There's resistance against using the same name in a namespace and a type inside that namespace. Why? What is the actual problem with this code? Is the 'foo::foo' looking too much like a constructor definition (in that context)? Isn't it great how the call to 'bar' has a clear relation to 'foo'?
Why is it considered bad practice that shouldn't pass code review? -
There's resistance against using the same name in a namespace and a type inside that namespace. Why? What is the actual problem with this code? Is the 'foo::foo' looking too much like a constructor definition (in that context)? Isn't it great how the call to 'bar' has a clear relation to 'foo'?
Why is it considered bad practice that shouldn't pass code review? -
@dneto 🙂 that phrasing/song was unknown to me.
I'd like to learn more about the details of non-IEEE fp. I know about targets missing support for evaluating subnormals, while still using IEEE representation. I need a better understanding here because there's a push in #WG21 (#cpp committee) to rely more on IEEE fp. And also the big question of compile-time vs. run-time behavior of fp. -
@dneto 🙂 that phrasing/song was unknown to me.
I'd like to learn more about the details of non-IEEE fp. I know about targets missing support for evaluating subnormals, while still using IEEE representation. I need a better understanding here because there's a push in #WG21 (#cpp committee) to rely more on IEEE fp. And also the big question of compile-time vs. run-time behavior of fp. -
@dneto 🙂 that phrasing/song was unknown to me.
I'd like to learn more about the details of non-IEEE fp. I know about targets missing support for evaluating subnormals, while still using IEEE representation. I need a better understanding here because there's a push in #WG21 (#cpp committee) to rely more on IEEE fp. And also the big question of compile-time vs. run-time behavior of fp. -
@dneto 🙂 that phrasing/song was unknown to me.
I'd like to learn more about the details of non-IEEE fp. I know about targets missing support for evaluating subnormals, while still using IEEE representation. I need a better understanding here because there's a push in #WG21 (#cpp committee) to rely more on IEEE fp. And also the big question of compile-time vs. run-time behavior of fp. -
@dneto 🙂 that phrasing/song was unknown to me.
I'd like to learn more about the details of non-IEEE fp. I know about targets missing support for evaluating subnormals, while still using IEEE representation. I need a better understanding here because there's a push in #WG21 (#cpp committee) to rely more on IEEE fp. And also the big question of compile-time vs. run-time behavior of fp. -
“We should also be clear that the work on profiles does appear to have extremely strong support in WG21.”
This is, to a significant extent, because people who feel that profiles are a complete waste of time have given up on #WG21, or have even given up on C++.
-
“We should also be clear that the work on profiles does appear to have extremely strong support in WG21.”
This is, to a significant extent, because people who feel that profiles are a complete waste of time have given up on #WG21, or have even given up on C++.
-
“We should also be clear that the work on profiles does appear to have extremely strong support in WG21.”
This is, to a significant extent, because people who feel that profiles are a complete waste of time have given up on #WG21, or have even given up on C++.
-
“We should also be clear that the work on profiles does appear to have extremely strong support in WG21.”
This is, to a significant extent, because people who feel that profiles are a complete waste of time have given up on #WG21, or have even given up on C++.