Skip to content
DevMeme
2127 of 7590
Languages Post #2376 · source on Telegram

C++ Developers vs. The Standards Committee

Description

A meme using the Anakin Skywalker 'It's outrageous, it's unfair' format from Star Wars: Episode III - Revenge of the Sith. The top caption reads, 'When the C++ committee does not include reflection in the new standard yet again'. The image below shows Anakin Skywalker looking distraught and complaining. The subtitled text at the bottom captures his famous line, 'How could they do this? It's outrageous, it's unfair'. This meme perfectly captures the long-standing frustration within the C++ community. Reflection, the ability of a program to inspect and modify its own structure and behavior at runtime, is a powerful feature available in many other modern languages. Its repeated omission from new C++ standards (like C++17, C++20, and C++23) is a major pain point for developers who are forced to rely on complex template metaprogramming and macro-based workarounds to achieve similar functionality. The meme equates the developers' feelings of being slighted by the standards committee (WG21) to Anakin's sense of injustice at not being granted the rank of Master

Comments

38
Anonymous ★ Top Pick The C++ committee treats reflection like a Jedi Master treats the dark side: they acknowledge its power, but are terrified of what will happen if they actually let anyone use it
  1. Anonymous ★ Top Pick

    The C++ committee treats reflection like a Jedi Master treats the dark side: they acknowledge its power, but are terrified of what will happen if they actually let anyone use it

  2. Anonymous

    Every time WG21 punts on reflection, another senior dev writes a 300-line constexpr template that accidentally invents category theory just to stringify a struct - zero-cost abstraction, they said

  3. Anonymous

    After 20 years of template metaprogramming gymnastics and SFINAE nightmares, C++ developers have mastered the art of compile-time reflection through sheer force of will and recursive template instantiation - who needs language support when you have 10,000-line error messages to guide you?

  4. Anonymous

    After decades of template metaprogramming gymnastics and SFINAE dark magic just to inspect types at compile time, C++ developers watching the committee defer reflection yet again is like watching Anakin's fall to the dark side - inevitable, tragic, and somehow still surprising every time it happens. Meanwhile, languages born in the 2010s ship with reflection in their MVP, but hey, at least we have concepts now... only took 20 years for those too

  5. Anonymous

    C++ reflection: the feature WG21 keeps punting like a perfect-forwarding universal reference - always almost usable, eternally undefined

  6. Anonymous

    C++ skipped reflection again, so our “metadata” is CRTP + constexpr + SFINAE + a Clang plugin - zero-cost abstraction, infinite-cost pipeline

  7. Anonymous

    WG21 defers reflection; we ship it anyway - 12k-line Clang plugin, custom IDL, and nightly builds that standardize ODR violations

  8. @GLXBX 5y

    Explain pls

  9. @Daniils_Loputevs 5y

    Russian translate: когда комитет C ++ снова не включает отражение в новом стандарте. Как они могли это сделать? Это возмутительно, это несправедливо.

    1. dev_meme 5y

      Evolution of meme text 👀

    2. @sany_nikonov 5y

      Рефлексия не переводится))

  10. @feskow 5y

    Is this a Java reference?

  11. @dfgprg 5y

    Вместо того чтобы програмить - учим новые стандарты👍

    1. dev_meme 5y

      Isn’t this a same thing? Btw, couldn’t you stick to community language, please?

      1. @ANeufeld 5y

        Dafuq

      2. @GLXBX 5y

        So, community language is C++ or what?

        1. @ANeufeld 5y

          if (strcmp(&community_language, "C++"){ /* write however you want in the comments */ }

          1. Deleted Account 5y

            Ooooh

          2. @dfgprg 5y

            Looks like old good plain C

            1. @LineDiscipline 5y

              if (strcmp(&community_language, "C++"))[[ likely ]]{ /* tak lutshche? */ }

              1. Deleted Account 5y

                if ( std::strcmp(community_language.c_str(), "C++") )[[ likely ]]{ /* a tak? */ }

                1. @daniiltimachov 5y

                  std::strcmp ?🤭

                  1. Deleted Account 5y

                    yes, in fact

                    1. @daniiltimachov 5y

                      ain't std::string::compare more cplusplusish?

                      1. Deleted Account 5y

                        iirc it doesn't support char const *, so you'll need to using namespace std::string_literals; "C++"sv

                        1. @daniiltimachov 5y

                          std::string constructor: *exists*

                      2. @bit69tream 5y

                        #include <boost/algorithm/string.hpp> if (boost::iequals(community_language, std::string("C++"))) { std::cout << std::string("community language is " << std::string("c++") << std::endl << std::flush; } else { std::cout << std::string("community language is not " << std::string("c++") << std::endl << std::flush; }

                        1. Deleted Account 5y

                          why flush twice?

                          1. @bit69tream 5y

                            because

                        2. @daniiltimachov 5y

                          boost rocks 4real

                        3. Deleted Account 5y

                          using namespace std::string_literals; std::cout << "community language is " << (community_language == "C++"sv ? "C++" : "not C++") << '\n';

                          1. Deleted Account 5y

                            std::endl does a flush and that's slow, so it's going away

                2. @bit69tream 5y

                  cumunity_language == "C++"

                  1. Deleted Account 5y

                    i wanted that to be the next iteration

          3. @dfgprg 5y

            Btw, 2 errors in expression

            1. @ANeufeld 5y

              Hmm, I only see one error, that missing parenthesis.

        2. @Agent1378 5y

          Or Php

  12. Deleted Account 5y

    i want those contracts too

Use J and K for navigation