home.social

#wg21 — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #wg21, aggregated by home.social.

fetched live
  1. Что нового в C++29: итоги июньской встречи в Брно

    13 июня закончилась встреча комитета по стандартизации C++ (также известного как WG21 ) в Брно (Чехия), на которой комитет работал над будущим стандартом C++, C++29. В этой статье кратко пересказаны все принятые в него нововведения с примерами их использования и ссылками на оригинальные пропозалы для тех, кто захочет познакомиться с ними детально.

    habr.com/ru/articles/1050514/

    #c++ #c++20 #c++26 #c++29 #wg21

  2. Что нового в C++29: итоги июньской встречи в Брно

    13 июня закончилась встреча комитета по стандартизации C++ (также известного как WG21 ) в Брно (Чехия), на которой комитет работал над будущим стандартом C++, C++29. В этой статье кратко пересказаны все принятые в него нововведения с примерами их использования и ссылками на оригинальные пропозалы для тех, кто захочет познакомиться с ними детально.

    habr.com/ru/articles/1050514/

    #c++ #c++20 #c++26 #c++29 #wg21

  3. Что нового в C++29: итоги июньской встречи в Брно

    13 июня закончилась встреча комитета по стандартизации C++ (также известного как WG21 ) в Брно (Чехия), на которой комитет работал над будущим стандартом C++, C++29. В этой статье кратко пересказаны все принятые в него нововведения с примерами их использования и ссылками на оригинальные пропозалы для тех, кто захочет познакомиться с ними детально.

    habr.com/ru/articles/1050514/

    #c++ #c++20 #c++26 #c++29 #wg21

  4. @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.

    #WG21 #cpp29

  5. @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.

    #WG21 #cpp29

  6. @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.

    #WG21 #cpp29

  7. @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.

    #WG21 #cpp29

  8. @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.

    #WG21 #cpp29

  9. 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.

  10. 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.

  11. 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.

  12. 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.

  13. 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.

  14. 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.

    #cpp #cplusplus #WG21

  15. 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.

    #cpp #cplusplus #WG21

  16. 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.

    #cpp #cplusplus #WG21

  17. 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.

    #cpp #cplusplus #WG21

  18. 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.

    #cpp #cplusplus #WG21

  19. Can we fix the following inconsistency in #CPlusPlus: compiler-explorer.com/z/qsYeTn? 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.

    #WG21 #cpp29 #cpp

  20. Can we fix the following inconsistency in #CPlusPlus: compiler-explorer.com/z/qsYeTn? 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.

    #WG21 #cpp29 #cpp

  21. Can we fix the following inconsistency in #CPlusPlus: compiler-explorer.com/z/qsYeTn? 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.

    #WG21 #cpp29 #cpp

  22. Can we fix the following inconsistency in #CPlusPlus: compiler-explorer.com/z/qsYeTn? 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.

    #WG21 #cpp29 #cpp

  23. Can we fix the following inconsistency in #CPlusPlus: compiler-explorer.com/z/qsYeTn? 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.

    #WG21 #cpp29 #cpp

  24. 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

    #weightlifting #traininglog

  25. 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

    #weightlifting #traininglog

  26. 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

    #weightlifting #traininglog

  27. Immediate escalating expressions promote constexpr functions to immediate functions. 👍 Now, can I get a partially promoted half-immediate function instead? 😢

    #wg21 #cpp26

  28. Immediate escalating expressions promote constexpr functions to immediate functions. 👍 Now, can I get a partially promoted half-immediate function instead? 😢

    #wg21 #cpp26

  29. Immediate escalating expressions promote constexpr functions to immediate functions. 👍 Now, can I get a partially promoted half-immediate function instead? 😢

    #wg21 #cpp26

  30. I read open-std.org/JTC1/SC22/WG21/do "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 (gcc.gnu.org/wiki/FunctionMulti). 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!

    #WG21 #cpp26 #GCC

  31. I read open-std.org/JTC1/SC22/WG21/do "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 (gcc.gnu.org/wiki/FunctionMulti). 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!

    #WG21 #cpp26 #GCC

  32. I read open-std.org/JTC1/SC22/WG21/do "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 (gcc.gnu.org/wiki/FunctionMulti). 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!

    #WG21 #cpp26 #GCC

  33. I read open-std.org/JTC1/SC22/WG21/do "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 (gcc.gnu.org/wiki/FunctionMulti). 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!

    #WG21 #cpp26 #GCC

  34. I read open-std.org/JTC1/SC22/WG21/do "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 (gcc.gnu.org/wiki/FunctionMulti). 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!

    #WG21 #cpp26 #GCC

  35. 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?

    #cpp #cplusplus #WG21 #cpp26 #namingThingsIsHard

  36. 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?

    #cpp #cplusplus #WG21 #cpp26 #namingThingsIsHard

  37. 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?

    #cpp #cplusplus #WG21 #cpp26 #namingThingsIsHard

  38. 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?

    #cpp #cplusplus #WG21 #cpp26 #namingThingsIsHard

  39. 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?

    #cpp #cplusplus #WG21 #cpp26 #namingThingsIsHard

  40. @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.

  41. @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.

  42. @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.

  43. @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.

  44. @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.

  45. @foonathan

    “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++.

    #Cplusplus

  46. @foonathan

    “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++.

    #Cplusplus

  47. @foonathan

    “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++.

    #Cplusplus

  48. @foonathan

    “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++.

    #Cplusplus