Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. Other Discussions
  3. Site Bugs / Suggestions
  4. C++ Code formatting for templates auto-adds weird default value

C++ Code formatting for templates auto-adds weird default value

Scheduled Pinned Locked Moved Site Bugs / Suggestions
c++wpfcomarchitectureannouncement
14 Posts 4 Posters 0 Views 1 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.
  • S Offline
    S Offline
    Stefan_Lang
    wrote on last edited by
    #1

    When I format the follwoing line of code as C++:

    template

    and post the messge, afterwards that line is auto-magically changed to

    template

    It doesn't happen every time, so I'm not sure what causes it. But there are plenty of postings in the C++ forum and Q&A that show the unwanted ="" addition!

    GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto) Point in case: http://www.infoq.com/news/2014/02/apple_gotofail_lessons[^]

    T C 2 Replies Last reply
    0
    • S Stefan_Lang

      When I format the follwoing line of code as C++:

      template

      and post the messge, afterwards that line is auto-magically changed to

      template

      It doesn't happen every time, so I'm not sure what causes it. But there are plenty of postings in the C++ forum and Q&A that show the unwanted ="" addition!

      GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto) Point in case: http://www.infoq.com/news/2014/02/apple_gotofail_lessons[^]

      T Offline
      T Offline
      Thomas Daniels
      wrote on last edited by
      #2

      It could be that the system thinks that <class T> is an HTML element and that the T is an attribute, resulting in this change. If that's the issue, then a way to solve this is to change the < and > chars into their HTML Entities, &lt; and &gt;

      The quick red ProgramFOX jumps right over the Lazy<Dog>. My latest article: Create an HTML5 (and JavaScript) Maze Game with a timer My group: C# Programmers Group

      S 1 Reply Last reply
      0
      • T Thomas Daniels

        It could be that the system thinks that <class T> is an HTML element and that the T is an attribute, resulting in this change. If that's the issue, then a way to solve this is to change the < and > chars into their HTML Entities, &lt; and &gt;

        The quick red ProgramFOX jumps right over the Lazy<Dog>. My latest article: Create an HTML5 (and JavaScript) Maze Game with a timer My group: C# Programmers Group

        S Offline
        S Offline
        Stefan_Lang
        wrote on last edited by
        #3

        Seems like just writing

        template

        and then enclosing it in pre tags doesn't provoke the error immediately, must be some intermediate step. But yes, now that you mention it, #include commands using angular brackets also get eaten by HTML. Must be connected to that.

        GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto) Point in case: http://www.infoq.com/news/2014/02/apple_gotofail_lessons[^]

        1 Reply Last reply
        0
        • S Stefan_Lang

          When I format the follwoing line of code as C++:

          template

          and post the messge, afterwards that line is auto-magically changed to

          template

          It doesn't happen every time, so I'm not sure what causes it. But there are plenty of postings in the C++ forum and Q&A that show the unwanted ="" addition!

          GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto) Point in case: http://www.infoq.com/news/2014/02/apple_gotofail_lessons[^]

          C Offline
          C Offline
          Chris Maunder
          wrote on last edited by
          #4

          If you post just "template <class T>" then yes, the message process will consider is s HTML and will attempt to "fix" it. If you wrap it in <PRE> tags then it won't. If you want to be able to post stuff that has <'s in it without the message system thinking it's HTML then check the "Treat my content as plain text, not as HTML" checkbox in the Options section just above the "Post Message" button at the bottom.

          cheers Chris Maunder

          B 1 Reply Last reply
          0
          • C Chris Maunder

            If you post just "template <class T>" then yes, the message process will consider is s HTML and will attempt to "fix" it. If you wrap it in <PRE> tags then it won't. If you want to be able to post stuff that has <'s in it without the message system thinking it's HTML then check the "Treat my content as plain text, not as HTML" checkbox in the Options section just above the "Post Message" button at the bottom.

            cheers Chris Maunder

            B Offline
            B Offline
            Brisingr Aerowing
            wrote on last edited by
            #5

            I have seen this happen even if it is in pre tags. There is also the auto-tag-close thing that also happens in pre tags. Neither of these always happens, but the do happen.

            What do you get when you cross a joke with a rhetorical question?

            S 1 Reply Last reply
            0
            • B Brisingr Aerowing

              I have seen this happen even if it is in pre tags. There is also the auto-tag-close thing that also happens in pre tags. Neither of these always happens, but the do happen.

              What do you get when you cross a joke with a rhetorical question?

              S Offline
              S Offline
              Stefan_Lang
              wrote on last edited by
              #6

              Brisingr Aerowing wrote:

              I have seen this happen even if it is in pre tags.

              Which is exactly what I was complaining about - if I enclose something with <pre lang="c++">...</pre>, then I want it formatted as code, not HTML. Enclosing it in text tags instead defeats the purpose.

              Brisingr Aerowing wrote:

              There is also the auto-tag-close thing that also happens in pre tags.

              Yup. When HTML finds anything that it thinks are tags - even though the text is enclosed in pre tags! - then it will swallow those presumed tags, and also auto-add closing tags at the end. This is rather annoying when you try to format code containing #include directives or template arguments! I've written many solutions and answers containing such code and now am used to use the > and < HTML tags within the code rather than using < and >, but the problem is that even a small typo can break code, and due to the HTML eating bits of code it's often impossible to just copy & paste the actual code - you have to modify it!

              GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto) Point in case: http://www.infoq.com/news/2014/02/apple_gotofail_lessons[^]

              C 1 Reply Last reply
              0
              • S Stefan_Lang

                Brisingr Aerowing wrote:

                I have seen this happen even if it is in pre tags.

                Which is exactly what I was complaining about - if I enclose something with <pre lang="c++">...</pre>, then I want it formatted as code, not HTML. Enclosing it in text tags instead defeats the purpose.

                Brisingr Aerowing wrote:

                There is also the auto-tag-close thing that also happens in pre tags.

                Yup. When HTML finds anything that it thinks are tags - even though the text is enclosed in pre tags! - then it will swallow those presumed tags, and also auto-add closing tags at the end. This is rather annoying when you try to format code containing #include directives or template arguments! I've written many solutions and answers containing such code and now am used to use the > and < HTML tags within the code rather than using < and >, but the problem is that even a small typo can break code, and due to the HTML eating bits of code it's often impossible to just copy & paste the actual code - you have to modify it!

                GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto) Point in case: http://www.infoq.com/news/2014/02/apple_gotofail_lessons[^]

                C Offline
                C Offline
                Chris Maunder
                wrote on last edited by
                #7

                Stefan_Lang wrote:

                When HTML finds anything that it thinks are tags - even though the text is enclosed in pre tags!

                What's meant to happen is that all HTML tags within PRE blocks except for I,U and B get auto-encoded so the processor doesn't see them as HTML anymore. Clearly Possibly a bug. I'll dig in and see what's happening. [Edit] However, I can't replicate the issue at this point Test:

                #include

                cheers Chris Maunder

                S B 2 Replies Last reply
                0
                • C Chris Maunder

                  Stefan_Lang wrote:

                  When HTML finds anything that it thinks are tags - even though the text is enclosed in pre tags!

                  What's meant to happen is that all HTML tags within PRE blocks except for I,U and B get auto-encoded so the processor doesn't see them as HTML anymore. Clearly Possibly a bug. I'll dig in and see what's happening. [Edit] However, I can't replicate the issue at this point Test:

                  #include

                  cheers Chris Maunder

                  S Offline
                  S Offline
                  Stefan_Lang
                  wrote on last edited by
                  #8

                  trying to reproduce... Test: copy paste from text editor, click elsewhere (auto-closes 'Paste-as' dialog), then select and enclose in <pre>

                  #include
                  template
                  class myT {
                  T var;
                  };

                  Test 2: copy from within unsent post, including pre tags

                  #include
                  template
                  class myT {
                  T var;
                  };

                  Test 3: copy from within unsent post, excluding pre tags, use paste as code

                  #include <string>
                  template <class T>
                  class myT {
                  T var;
                  };

                  Edit: ok, all seems to work, except pasting as codeblock uses C# formatting by default. Also the C# formatting automatically replaced the < and > tokens with the corresponding HTML tags automatically. Another test: typing (not copying) same code, then enclose in pre

                  #include
                  template
                  class myT {
                  var T;
                  };

                  At this point I'm running out of ideas - maybe it's only in some forums ? I've noticed it in Q&A, will go test there... Edit 2: Tried 'improving' a solution of mine in Q&A, but couldn't reproduce the issue. I'll bookmark this thread and come back when i find an example that can be reproduced. Edit 3: Another test, trying to reproduce the problem i just faced in Q&A:

                  template
                  class myT {
                  T var;
                  public:
                  void hello();
                  };
                  void foo() {
                  myT x;
                  x.hello();
                  }

                  The function myT::hello().

                  GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto) Point in case: http://www.infoq.com/news/2014/02/apple_gotofail_lessons[^]

                  1 Reply Last reply
                  0
                  • C Chris Maunder

                    Stefan_Lang wrote:

                    When HTML finds anything that it thinks are tags - even though the text is enclosed in pre tags!

                    What's meant to happen is that all HTML tags within PRE blocks except for I,U and B get auto-encoded so the processor doesn't see them as HTML anymore. Clearly Possibly a bug. I'll dig in and see what's happening. [Edit] However, I can't replicate the issue at this point Test:

                    #include

                    cheers Chris Maunder

                    B Offline
                    B Offline
                    Brisingr Aerowing
                    wrote on last edited by
                    #9

                    It seems to happen randomly. I never know when it will hit.

                    /// /// Adds all to .
                    ///
                    public static void AddRange(this ICollection list, IEnumerable elements)
                    {
                    foreach (T o in elements)
                    list.Add(o);
                    }

                    template function_declaration;
                    template function_declaration;

                    //This example throws the following error : call of overloaded 'max(double, double)' is ambiguous
                    template
                    Type max(Type a, Type b) {
                    return a > b ? a : b;
                    }

                    What do you get when you cross a joke with a rhetorical question?

                    C 1 Reply Last reply
                    0
                    • B Brisingr Aerowing

                      It seems to happen randomly. I never know when it will hit.

                      /// /// Adds all to .
                      ///
                      public static void AddRange(this ICollection list, IEnumerable elements)
                      {
                      foreach (T o in elements)
                      list.Add(o);
                      }

                      template function_declaration;
                      template function_declaration;

                      //This example throws the following error : call of overloaded 'max(double, double)' is ambiguous
                      template
                      Type max(Type a, Type b) {
                      return a > b ? a : b;
                      }

                      What do you get when you cross a joke with a rhetorical question?

                      C Offline
                      C Offline
                      Chris Maunder
                      wrote on last edited by
                      #10

                      Let me know when you can replicate it.

                      cheers Chris Maunder

                      S 4 Replies Last reply
                      0
                      • C Chris Maunder

                        Let me know when you can replicate it.

                        cheers Chris Maunder

                        S Offline
                        S Offline
                        Stefan_Lang
                        wrote on last edited by
                        #11

                        Can't exactly replicate, but in my last attempt got different errors, trying to post this:

                        template
                        class myT {
                        T var;
                        public:
                        void hello();
                        };
                        void foo() {
                        myT x;
                        x.hello();
                        }

                        The function myT::hello().

                        GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto) Point in case: http://www.infoq.com/news/2014/02/apple_gotofail_lessons[^]

                        1 Reply Last reply
                        0
                        • C Chris Maunder

                          Let me know when you can replicate it.

                          cheers Chris Maunder

                          S Offline
                          S Offline
                          Stefan_Lang
                          wrote on last edited by
                          #12

                          In my recent reply (I deliberately did not edit it), the last case of <int> has been eaten by HTML - although it's actually still in the original text!

                          GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto) Point in case: http://www.infoq.com/news/2014/02/apple_gotofail_lessons[^]

                          1 Reply Last reply
                          0
                          • C Chris Maunder

                            Let me know when you can replicate it.

                            cheers Chris Maunder

                            S Offline
                            S Offline
                            Stefan_Lang
                            wrote on last edited by
                            #13

                            Here's another formatting issue for C++ code: a triple slash followed by anything containing either a 'less' sign or the associated html tag, leads to the remainder of the code being greyed out! Not even sure why any parts of C++ code should be greyed out!? Interestingly, the part before the less sign is correctly formatted in green, as a comment, although the leading triple slash is still grey :confused: Here's an example:

                            void foo() {
                            /// some < meaningful code
                            some = more + code;
                            }

                            GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)

                            1 Reply Last reply
                            0
                            • C Chris Maunder

                              Let me know when you can replicate it.

                              cheers Chris Maunder

                              S Offline
                              S Offline
                              Stefan_Lang
                              wrote on last edited by
                              #14

                              And another occurence, this time concerning dynamic_cast template arguments. In the solution I posted here[^], I tried to post code containing

                              dynamic_cast<some_type*>(some_pointer);

                              but what I got - even after an attempt to correct it - was

                              dynamic_cast(some_pointer);

                              I needed to replace the < and > tokens by the corresponding HTML tags to fix it! Test to replicate:

                              dynamic_cast(some_pointer)

                              P.S.: Test failed - couldn't replicate :(

                              GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)

                              1 Reply Last reply
                              0
                              Reply
                              • Reply as topic
                              Log in to reply
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes


                              • Login

                              • Don't have an account? Register

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Categories
                              • Recent
                              • Tags
                              • Popular
                              • World
                              • Users
                              • Groups