HackerFriction Feedback

Products · Product

C++

Raised as a usability problem by 496 people on Hacker News over 20 years (2007–2026), in 487 threads.

Ranked by people · period

  1. 1
    Template errors are huge and cryptic to understandUnreviewed

    8 people this year · 7 threads

  1. 1
    Template errors are huge and cryptic to understandUnreviewed

    29 people in the last 5 years · 25 threads

  2. 2
    Cryptic compiler errors leave beginners unable to actUnreviewed

    20 people in the last 5 years · 18 threads

  3. 3
    Fancy features make code hard to read and maintainUnreviewed

    8 people in the last 5 years · 8 threads

  4. 4
    Integrating existing libraries into the build is hardUnreviewed

    7 people in the last 5 years · 7 threads

  5. 5
    Built-in footguns make easy mistakes blow upUnreviewed

    6 people in the last 5 years · 6 threads

  6. 6
    Compiles take so long they slow productivityUnreviewed

    6 people in the last 5 years · 6 threads

  7. 7
    Must remember exact member order to use designated initializersUnreviewed

    5 people in the last 5 years · 5 threads

  8. 8
    Template code needs strange idioms like SFINAE to workUnreviewed

    4 people in the last 5 years · 4 threads

  9. 9
    Streams easily left in wrong state; overloaded operators confuseUnreviewed

    4 people in the last 5 years · 4 threads

  10. 10
    Build errors are unclear and builds are slowUnreviewed

    4 people in the last 5 years · 4 threads

  11. 11
    Reading code needs much non-contextual information, slowing workUnreviewed

    3 people in the last 5 years · 3 threads

  12. 12
    Easy to pass begin() where end() was meantUnreviewed

    3 people in the last 5 years · 3 threads

  13. 13
    Too many new features make the language hard to trackUnreviewed

    3 people in the last 5 years · 3 threads

  14. 14
    Hard to know which standard library parts to avoidUnreviewed

    3 people in the last 5 years · 3 threads

  1. 1
    Template errors are huge and cryptic to understandUnreviewed

    66 people since the beginning · 60 threads

  2. 2
    Cryptic compiler errors leave beginners unable to actUnreviewed

    37 people since the beginning · 34 threads

  3. 3
    Fancy features make code hard to read and maintainUnreviewed

    20 people since the beginning · 20 threads

  4. 4
    Built-in footguns make easy mistakes blow upUnreviewed

    15 people since the beginning · 15 threads

  5. 5
    Compiles take so long they slow productivityUnreviewed

    13 people since the beginning · 13 threads

  6. 6
    Reading code needs much non-contextual information, slowing workUnreviewed

    11 people since the beginning · 11 threads

  7. 7
    Integrating existing libraries into the build is hardUnreviewed

    11 people since the beginning · 11 threads

  8. 8
    Template code needs strange idioms like SFINAE to workUnreviewed

    7 people since the beginning · 7 threads

  9. 9
    Overloaded operators have unintuitive meanings, hard to readUnreviewed

    7 people since the beginning · 7 threads

  10. 10
    Managing dependencies needs many separate, clumsy toolsUnreviewed

    7 people since the beginning · 6 threads

  11. 11
    std::move is widely misunderstood and hard to use safelyUnreviewed

    7 people since the beginning · 7 threads

  12. 12
    Must remember exact member order to use designated initializersUnreviewed

    6 people since the beginning · 6 threads

  13. 13
    Easy to pass begin() where end() was meantUnreviewed

    6 people since the beginning · 6 threads

  14. 14
    STL behaves unexpectedly and gives obtuse error messagesUnreviewed

    6 people since the beginning · 6 threads

  15. 15
    Streams easily left in wrong state; overloaded operators confuseUnreviewed

    6 people since the beginning · 6 threads

  16. 16
    Debugging is slow due to inscrutable behaviour and broken toolingUnreviewed

    5 people since the beginning · 5 threads

  17. 17
    Writing reliable code shifts heavy cognitive load onto programmersUnreviewed

    5 people since the beginning · 5 threads

  18. 18
    Setting up a project and build across platforms is tediousUnreviewed

    4 people since the beginning · 4 threads

  19. 19
    Too many new features make the language hard to trackUnreviewed

    4 people since the beginning · 4 threads

  20. 20
    Coroutine primitives are complicated and use confusing terminologyUnreviewed

    4 people since the beginning · 4 threads

  21. 21
    Similar-looking code behaves differently and fails to compileUnreviewed

    4 people since the beginning · 4 threads

  22. 22
    Declarations must be split across headers and source filesUnreviewed

    4 people since the beginning · 4 threads

  23. 23
    Installing libraries takes so much effort that trying several is impracticalUnreviewed

    4 people since the beginning · 4 threads

  24. 24
    Build errors are unclear and builds are slowUnreviewed

    4 people since the beginning · 4 threads

  25. 25
    Combined rules create unintuitive corner cases that are hard to predictUnreviewed

    3 people since the beginning · 3 threads

  26. 26
    Relaxed memory semantics are very hard to reason aboutUnreviewed

    3 people since the beginning · 3 threads

  27. 27
    Easy to make mistakes with many ways to go wrongUnreviewed

    3 people since the beginning · 3 threads

  28. 28
    Proposed pointer syntax creates confusing mixed-syntax parsing ambiguityUnreviewed

    3 people since the beginning · 3 threads

  29. 29
    Getting C++ modules working cleanly is difficultUnreviewed

    3 people since the beginning · 3 threads

  30. 30
    Can't tell from reading code which calls might throwUnreviewed

    3 people since the beginning · 3 threads

  31. 31
    Stdin and stdout via iostreams are overly complicated to useUnreviewed

    3 people since the beginning · 3 threads

  32. 32
    Hard to fix code once it has drifted into a bad stateUnreviewed

    3 people since the beginning · 3 threads

  33. 33
    Hard to know which standard library parts to avoidUnreviewed

    3 people since the beginning · 3 threads

Every issue, all time, most people first

  1. Template errors are huge and cryptic to understandUnreviewed

    66 people since 2011, in 16 different years · 8 this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 1 person2012: 3 people2013: 1 person2014: 4 people2015: 4 people2016: 4 people2017: 4 people2018: 3 people2019: 4 people2020: 9 people2021: 4 people2022: 7 people2023: 6 people2024: 6 people2025: 4 people2026: 6 people
    20072026
    Something wrong here?
  2. Cryptic compiler errors leave beginners unable to actUnreviewed

    37 people since 2009, in 14 different years · 1 this year

    2007: 0 people2008: 0 people2009: 1 person2010: 2 people2011: 1 person2012: 0 people2013: 0 people2014: 2 people2015: 0 people2016: 2 people2017: 1 person2018: 1 person2019: 5 people2020: 2 people2021: 1 person2022: 9 people2023: 5 people2024: 4 people2025: 2 people2026: 0 people
    20072026
    Something wrong here?
  3. Fancy features make code hard to read and maintainUnreviewed

    20 people since 2012, in 13 different years · 1 this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 0 people2012: 1 person2013: 1 person2014: 2 people2015: 0 people2016: 0 people2017: 1 person2018: 2 people2019: 3 people2020: 1 person2021: 1 person2022: 2 people2023: 3 people2024: 1 person2025: 1 person2026: 1 person
    20072026
    Something wrong here?
  4. Built-in footguns make easy mistakes blow upUnreviewed

    15 people since 2014, in 10 different years · 1 this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 0 people2012: 0 people2013: 0 people2014: 3 people2015: 1 person2016: 1 person2017: 0 people2018: 1 person2019: 1 person2020: 2 people2021: 0 people2022: 1 person2023: 2 people2024: 0 people2025: 2 people2026: 1 person
    20072026
    Something wrong here?
  5. Compiles take so long they slow productivityUnreviewed

    13 people since 2011, in 8 different years · 2 this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 1 person2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 2 people2017: 1 person2018: 2 people2019: 1 person2020: 0 people2021: 0 people2022: 2 people2023: 0 people2024: 2 people2025: 2 people2026: 0 people
    20072026
    Something wrong here?
  6. Reading code needs much non-contextual information, slowing workUnreviewed

    11 people since 2007, in 11 different years · none this year

    2007: 1 person2008: 1 person2009: 0 people2010: 1 person2011: 0 people2012: 0 people2013: 0 people2014: 1 person2015: 0 people2016: 1 person2017: 1 person2018: 1 person2019: 0 people2020: 1 person2021: 1 person2022: 1 person2023: 0 people2024: 0 people2025: 1 person2026: 0 people
    20072026
    Something wrong here?
  7. Integrating existing libraries into the build is hardUnreviewed

    11 people since 2015, in 8 different years · 1 this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 1 person2016: 1 person2017: 0 people2018: 1 person2019: 0 people2020: 1 person2021: 0 people2022: 1 person2023: 1 person2024: 3 people2025: 2 people2026: 0 people
    20072026
    Something wrong here?
  8. Template code needs strange idioms like SFINAE to workUnreviewed

    7 people since 2013, in 6 different years · 1 this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 0 people2012: 0 people2013: 1 person2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 0 people2020: 1 person2021: 1 person2022: 1 person2023: 2 people2024: 0 people2025: 1 person2026: 0 people
    20072026
    Something wrong here?
  9. Overloaded operators have unintuitive meanings, hard to readUnreviewed

    7 people since 2011, in 5 different years · none this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 1 person2012: 0 people2013: 0 people2014: 0 people2015: 3 people2016: 0 people2017: 0 people2018: 0 people2019: 1 person2020: 0 people2021: 1 person2022: 0 people2023: 0 people2024: 0 people2025: 1 person2026: 0 people
    20072026
    Something wrong here?
  10. Managing dependencies needs many separate, clumsy toolsUnreviewed

    7 people since 2012, in 5 different years · none this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 0 people2012: 1 person2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 1 person2018: 0 people2019: 0 people2020: 2 people2021: 0 people2022: 2 people2023: 0 people2024: 0 people2025: 1 person2026: 0 people
    20072026
    Something wrong here?
  11. std::move is widely misunderstood and hard to use safelyUnreviewed

    7 people since 2015, in 4 different years · none this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 2 people2016: 0 people2017: 0 people2018: 1 person2019: 0 people2020: 1 person2021: 3 people2022: 0 people2023: 0 people2024: 0 people2025: 0 people2026: 0 people
    20072026
    Something wrong here?
  12. Must remember exact member order to use designated initializersUnreviewed

    6 people since 2011, in 5 different years · 2 this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 1 person2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 0 people2020: 1 person2021: 0 people2022: 1 person2023: 0 people2024: 0 people2025: 2 people2026: 2 people
    20072026
    Something wrong here?
  13. Easy to pass begin() where end() was meantUnreviewed

    6 people since 2018, in 5 different years · 1 this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 2 people2019: 0 people2020: 1 person2021: 0 people2022: 0 people2023: 1 person2024: 0 people2025: 1 person2026: 1 person
    20072026
    Something wrong here?
  14. STL behaves unexpectedly and gives obtuse error messagesUnreviewed

    6 people since 2012, in 5 different years · 1 this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 0 people2012: 2 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 1 person2019: 1 person2020: 1 person2021: 0 people2022: 0 people2023: 0 people2024: 0 people2025: 1 person2026: 0 people
    20072026
    Something wrong here?
  15. Streams easily left in wrong state; overloaded operators confuseUnreviewed

    6 people since 2016, in 4 different years · none this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 1 person2017: 0 people2018: 0 people2019: 0 people2020: 0 people2021: 1 person2022: 0 people2023: 2 people2024: 2 people2025: 0 people2026: 0 people
    20072026
    Something wrong here?
  16. Debugging is slow due to inscrutable behaviour and broken toolingUnreviewed

    5 people since 2013, in 4 different years · none this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 0 people2012: 0 people2013: 1 person2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 2 people2020: 0 people2021: 0 people2022: 0 people2023: 1 person2024: 1 person2025: 0 people2026: 0 people
    20072026
    Something wrong here?
  17. Writing reliable code shifts heavy cognitive load onto programmersUnreviewed

    5 people since 2010, in 3 different years · none this year

    2007: 0 people2008: 0 people2009: 0 people2010: 2 people2011: 0 people2012: 0 people2013: 0 people2014: 1 person2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 0 people2020: 0 people2021: 2 people2022: 0 people2023: 0 people2024: 0 people2025: 0 people2026: 0 people
    20072026
    Something wrong here?
  18. Setting up a project and build across platforms is tediousUnreviewed

    4 people since 2016, in 4 different years · none this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 1 person2017: 2 people2018: 0 people2019: 0 people2020: 0 people2021: 0 people2022: 0 people2023: 1 person2024: 0 people2025: 1 person2026: 0 people
    20072026
    Something wrong here?
  19. Too many new features make the language hard to trackUnreviewed

    4 people since 2021, in 4 different years · 1 this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 0 people2020: 0 people2021: 1 person2022: 1 person2023: 1 person2024: 0 people2025: 0 people2026: 1 person
    20072026
    Something wrong here?
  20. Coroutine primitives are complicated and use confusing terminologyUnreviewed

    4 people since 2020, in 4 different years · 1 this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 0 people2020: 1 person2021: 1 person2022: 0 people2023: 0 people2024: 0 people2025: 1 person2026: 1 person
    20072026
    Something wrong here?
  21. Similar-looking code behaves differently and fails to compileUnreviewed

    4 people since 2011, in 3 different years · none this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 1 person2012: 0 people2013: 0 people2014: 2 people2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 0 people2020: 0 people2021: 0 people2022: 0 people2023: 0 people2024: 1 person2025: 0 people2026: 0 people
    20072026
    Something wrong here?
  22. Declarations must be split across headers and source filesUnreviewed

    4 people since 2018, in 3 different years · 1 this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 2 people2019: 0 people2020: 0 people2021: 0 people2022: 0 people2023: 1 person2024: 0 people2025: 0 people2026: 1 person
    20072026
    Something wrong here?
  23. Installing libraries takes so much effort that trying several is impracticalUnreviewed

    4 people since 2019, in 2 different years · none this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 1 person2020: 3 people2021: 0 people2022: 0 people2023: 0 people2024: 0 people2025: 0 people2026: 0 people
    20072026
    Something wrong here?
  24. Build errors are unclear and builds are slowUnreviewed

    4 people since 2023, in 2 different years · none this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 0 people2020: 0 people2021: 0 people2022: 0 people2023: 3 people2024: 1 person2025: 0 people2026: 0 people
    20072026
    Something wrong here?
  25. Combined rules create unintuitive corner cases that are hard to predictUnreviewed

    3 people since 2010, in 3 different years · none this year

    2007: 0 people2008: 0 people2009: 0 people2010: 1 person2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 1 person2017: 1 person2018: 0 people2019: 0 people2020: 0 people2021: 0 people2022: 0 people2023: 0 people2024: 0 people2025: 0 people2026: 0 people
    20072026
    Something wrong here?
  26. Relaxed memory semantics are very hard to reason aboutUnreviewed

    3 people since 2010, in 3 different years · none this year

    2007: 0 people2008: 0 people2009: 0 people2010: 1 person2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 0 people2020: 0 people2021: 0 people2022: 0 people2023: 1 person2024: 1 person2025: 0 people2026: 0 people
    20072026
    Something wrong here?
  27. Easy to make mistakes with many ways to go wrongUnreviewed

    3 people since 2011, in 3 different years · none this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 1 person2012: 0 people2013: 0 people2014: 0 people2015: 1 person2016: 0 people2017: 0 people2018: 1 person2019: 0 people2020: 0 people2021: 0 people2022: 0 people2023: 0 people2024: 0 people2025: 0 people2026: 0 people
    20072026
    Something wrong here?
  28. Proposed pointer syntax creates confusing mixed-syntax parsing ambiguityUnreviewed

    3 people since 2012, in 3 different years · none this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 0 people2012: 1 person2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 0 people2020: 1 person2021: 0 people2022: 1 person2023: 0 people2024: 0 people2025: 0 people2026: 0 people
    20072026
    Something wrong here?
  29. Getting C++ modules working cleanly is difficultUnreviewed

    3 people since 2017, in 3 different years · 1 this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 1 person2018: 0 people2019: 0 people2020: 0 people2021: 1 person2022: 0 people2023: 0 people2024: 0 people2025: 0 people2026: 1 person
    20072026
    Something wrong here?
  30. Can't tell from reading code which calls might throwUnreviewed

    3 people since 2018, in 3 different years · none this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 1 person2019: 0 people2020: 0 people2021: 1 person2022: 0 people2023: 0 people2024: 1 person2025: 0 people2026: 0 people
    20072026
    Something wrong here?
  31. Stdin and stdout via iostreams are overly complicated to useUnreviewed

    3 people since 2009, in 3 different years · none this year

    2007: 0 people2008: 0 people2009: 1 person2010: 0 people2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 1 person2017: 0 people2018: 0 people2019: 0 people2020: 0 people2021: 1 person2022: 0 people2023: 0 people2024: 0 people2025: 0 people2026: 0 people
    20072026
    Something wrong here?
  32. Hard to fix code once it has drifted into a bad stateUnreviewed

    3 people since 2009, in 3 different years · none this year

    2007: 0 people2008: 0 people2009: 1 person2010: 0 people2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 0 people2020: 1 person2021: 0 people2022: 1 person2023: 0 people2024: 0 people2025: 0 people2026: 0 people
    20072026
    Something wrong here?
  33. Hard to know which standard library parts to avoidUnreviewed

    3 people since 2023, in 2 different years · 2 this year

    2007: 0 people2008: 0 people2009: 0 people2010: 0 people2011: 0 people2012: 0 people2013: 0 people2014: 0 people2015: 0 people2016: 0 people2017: 0 people2018: 0 people2019: 0 people2020: 0 people2021: 0 people2022: 0 people2023: 1 person2024: 0 people2025: 0 people2026: 2 people
    20072026
    Something wrong here?

This list counts all time; the period switch above only changes the ranking. Each issue is a group of similar complaints raised by at least 3 people in 3 different months and threads. Each line under an issue is Claude Haiku's summary of one of its latest comments, not a quote; follow it to read the comment on Hacker News.

Unreviewed issues were grouped by machine: Claude Haiku labelled each comment as a usability complaint, named what it's about and summed up the problem in a line, and a small model grouped similar problems. Nobody has checked them by hand. Expect mistakes.

The newest 50 complaints