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.6k 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 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 Online
      JonBJ Online
      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 Online
                    JonBJ Online
                    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