Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. General talk
  3. The Lounge
  4. Hidden features of C++
Forum Updated to NodeBB v4.3 + New Features

Hidden features of C++

Scheduled Pinned Locked Moved Unsolved The Lounge
19 Posts 7 Posters 2.4k Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • fcarneyF fcarney

    @kshegunov said in Hidden features of C++:

    https://godbolt.org/z/gPiYxP

    Ooh, that is a cool website. Assembler right in a browser. Thanks!

    kshegunovK Offline
    kshegunovK Offline
    kshegunov
    Moderators
    wrote on last edited by
    #8

    The guy with the site: https://www.youtube.com/watch?v=bSkpMdDe4g4 (also a very good talk).

    Read and abide by the Qt Code of Conduct

    1 Reply Last reply
    2
    • VRoninV Offline
      VRoninV Offline
      VRonin
      wrote on last edited by
      #9

      If you want to have more fun: https://www.ioccc.org/years.html
      For example: https://www.ioccc.org/2018/burton1/prog.nowarn.c

      "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
      ~Napoleon Bonaparte

      On a crusade to banish setIndexWidget() from the holy land of Qt

      1 Reply Last reply
      0
      • fcarneyF Offline
        fcarneyF Offline
        fcarney
        wrote on last edited by
        #10

        Here is another interesting site:
        http://madebyevan.com/obscure-cpp-features/

        C++ is a perfectly valid school of magic.

        1 Reply Last reply
        0
        • JonBJ Offline
          JonBJ Offline
          JonB
          wrote on last edited by JonB
          #11
          i[str] = (i2-i)[str2];
          

          I'm going to throw this in here, and doubtless wait for others to disagree: I think the compiler should generate a warning on i[str]. Do I realize it's the same as str[i] --- yes, I do. Do I realize it's just the same as *(i + str), which I wouldn't complain about --- yes, I do. Bit I'd still like to see a friendly, 2019, open source compiler warning about i not being indexable....

          EDIT "I think the compiler should": maybe I meant "I expected the compiler to"....

          1 Reply Last reply
          0
          • fcarneyF Offline
            fcarneyF Offline
            fcarney
            wrote on last edited by
            #12

            @JonB said in Hidden features of C++:

            doubtless wait for others to disagree

            Or the obligatory "My <insert language> doesn't do this. That is why it is superior."
            cough cough rust cough cough... ;)

            (disclaimer: I have never programmed rust)

            C++ is a perfectly valid school of magic.

            1 Reply Last reply
            0
            • fcarneyF Offline
              fcarneyF Offline
              fcarney
              wrote on last edited by
              #13

              Now I am kinda scared:

              qInfo() << 3<:"Foobar"];
              

              Outputs 'b'.
              But this:

              std::cout << 3<:"Foobar"];
              

              Crashes

              I am really struggling as to how that translates to an index in the first case, but crashes in the second case.

              C++ is a perfectly valid school of magic.

              fcarneyF 1 Reply Last reply
              0
              • fcarneyF fcarney

                Now I am kinda scared:

                qInfo() << 3<:"Foobar"];
                

                Outputs 'b'.
                But this:

                std::cout << 3<:"Foobar"];
                

                Crashes

                I am really struggling as to how that translates to an index in the first case, but crashes in the second case.

                fcarneyF Offline
                fcarneyF Offline
                fcarney
                wrote on last edited by
                #14

                @fcarney said in Hidden features of C++:

                std::cout << 3<:"Foobar"];

                Nevermind, it needs "\n" to output. It was crashing cause I was killing it... doh! I rarely use cout anymore.

                C++ is a perfectly valid school of magic.

                fcarneyF 1 Reply Last reply
                0
                • fcarneyF fcarney

                  @fcarney said in Hidden features of C++:

                  std::cout << 3<:"Foobar"];

                  Nevermind, it needs "\n" to output. It was crashing cause I was killing it... doh! I rarely use cout anymore.

                  fcarneyF Offline
                  fcarneyF Offline
                  fcarney
                  wrote on last edited by
                  #15

                  Also,
                  digraphs

                  Why? Why?!

                  C++ is a perfectly valid school of magic.

                  kshegunovK 1 Reply Last reply
                  0
                  • fcarneyF fcarney

                    Also,
                    digraphs

                    Why? Why?!

                    kshegunovK Offline
                    kshegunovK Offline
                    kshegunov
                    Moderators
                    wrote on last edited by
                    #16

                    @fcarney said in Hidden features of C++:

                    digraphs

                    That's some bag-o-worms. My advice - don't dig there.

                    Read and abide by the Qt Code of Conduct

                    1 Reply Last reply
                    0
                    • Kent-DorfmanK Offline
                      Kent-DorfmanK Offline
                      Kent-Dorfman
                      wrote on last edited by
                      #17

                      I think the take-away from this discussion is that if you want to write code to really piss off someone else who has to read or maintain it then use C++.

                      JonBJ 1 Reply Last reply
                      1
                      • Kent-DorfmanK Kent-Dorfman

                        I think the take-away from this discussion is that if you want to write code to really piss off someone else who has to read or maintain it then use C++.

                        JonBJ Offline
                        JonBJ Offline
                        JonB
                        wrote on last edited by JonB
                        #18

                        @Kent-Dorfman
                        No, C++ readability/maintenance has nothing on this little gem language, which has always been a favorite of mine: https://en.wikipedia.org/wiki/Brainfuck. Here, for example, is Hello World! in its entirety:

                        ++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
                        

                        And you can go to https://sange.fi/esoteric/brainfuck/impl/interp/i.html to paste it in and run :)

                        ODБOïO 1 Reply Last reply
                        1
                        • JonBJ JonB

                          @Kent-Dorfman
                          No, C++ readability/maintenance has nothing on this little gem language, which has always been a favorite of mine: https://en.wikipedia.org/wiki/Brainfuck. Here, for example, is Hello World! in its entirety:

                          ++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
                          

                          And you can go to https://sange.fi/esoteric/brainfuck/impl/interp/i.html to paste it in and run :)

                          ODБOïO Offline
                          ODБOïO Offline
                          ODБOï
                          wrote on last edited by ODБOï
                          #19

                          @JonB there is also Malbolge, but i don't thik this languages are designed to write real programs.

                          hello world

                          ('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<M:9wv6WsU2T|nm-,jcL(I&%$#"
                          `CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj"Fhg${z@>
                          
                          1 Reply Last reply
                          1

                          • Login

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • Users
                          • Groups
                          • Search
                          • Get Qt Extensions
                          • Unsolved