Does C++ supports variable template parameters ?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Fan Yang

    Does C++ supports variable template parameters ?

    I'm reading Modern C++ Design, and it is saying "Variable template
    parameters simply don't exist."
    But I find VC7.1 & VC8 support this feature.Who can tell me that which is
    right -_-b
    Many thanks.


  • Alf P. Steinbach

    #2
    Re: Does C++ supports variable template parameters ?

    * Fan Yang:
    I'm reading Modern C++ Design, and it is saying "Variable template
    parameters simply don't exist."
    But I find VC7.1 & VC8 support this feature.Who can tell me that which is
    right -_-b
    Have you heard about "context"? Some statements have context.

    --
    A: Because it messes up the order in which people normally read text.
    Q: Why is it such a bad thing?
    A: Top-posting.
    Q: What is the most annoying thing on usenet and in e-mail?

    Comment

    • dasjotre

      #3
      Re: Does C++ supports variable template parameters ?


      Fan Yang wrote:
      I'm reading Modern C++ Design, and it is saying "Variable template
      parameters simply don't exist."
      aka variadic template parameters
      But I find VC7.1 & VC8 support this feature.Who can tell me that which is
      right -_-b
      I am not aware of any compiler supporting variadic template parameters.

      Comment

      • Fan Yang

        #4
        Re: Does C++ supports variable template parameters ?

        I am sorry, but what's the context?

        "Alf P. Steinbach" <alfps@start.no >
        ??????:4tqpp8F1 4tmapU1@mid.ind ividual.net...
        >* Fan Yang:
        >I'm reading Modern C++ Design, and it is saying "Variable template
        >parameters simply don't exist."
        >But I find VC7.1 & VC8 support this feature.Who can tell me that which is
        >right -_-b
        >
        Have you heard about "context"? Some statements have context.
        >
        --
        A: Because it messes up the order in which people normally read text.
        Q: Why is it such a bad thing?
        A: Top-posting.
        Q: What is the most annoying thing on usenet and in e-mail?

        Comment

        • Noah Roberts

          #5
          Re: Does C++ supports variable template parameters ?


          dasjotre wrote:
          Fan Yang wrote:
          I'm reading Modern C++ Design, and it is saying "Variable template
          parameters simply don't exist."
          >
          aka variadic template parameters
          >
          But I find VC7.1 & VC8 support this feature.Who can tell me that which is
          right -_-b
          >
          I am not aware of any compiler supporting variadic template parameters.
          However, in practice this type of template can be created for some
          upper number of N. Look at many examples from TR1 and Boost (tuple,
          MPL, array, etc...). I'd be surprised if that book doesn't describe
          these techneques but I haven't read the whole thing and certainly don't
          know it by heart so I can't say what part the OP is talking about.

          Comment

          • Pete Becker

            #6
            Re: Does C++ supports variable template parameters ?

            Noah Roberts wrote:
            dasjotre wrote:
            >Fan Yang wrote:
            >>I'm reading Modern C++ Design, and it is saying "Variable template
            >>parameters simply don't exist."
            >aka variadic template parameters
            >>
            >>But I find VC7.1 & VC8 support this feature.Who can tell me that which is
            >>right -_-b
            >I am not aware of any compiler supporting variadic template parameters.
            >
            However, in practice this type of template can be created for some
            upper number of N. Look at many examples from TR1 and Boost (tuple,
            MPL, array, etc...). I'd be surprised if that book doesn't describe
            these techneques but I haven't read the whole thing and certainly don't
            know it by heart so I can't say what part the OP is talking about.
            >
            Yes, you can do it, but it's ghastly. To support 0..N arguments you have
            to write N+1 templates. Which is why C++0x will probably have
            variable-length argument lists for templates.

            --

            -- Pete
            Roundhouse Consulting, Ltd. (www.versatilecoding.com)
            Author of "The Standard C++ Library Extensions: a Tutorial and
            Reference." (www.petebecker.com/tr1book)

            Comment

            • Noah Roberts

              #7
              Re: Does C++ supports variable template parameters ?


              Pete Becker wrote:
              Noah Roberts wrote:
              However, in practice this type of template can be created for some
              upper number of N. Look at many examples from TR1 and Boost (tuple,
              MPL, array, etc...). I'd be surprised if that book doesn't describe
              these techneques but I haven't read the whole thing and certainly don't
              know it by heart so I can't say what part the OP is talking about.
              >
              Yes, you can do it, but it's ghastly. To support 0..N arguments you have
              to write N+1 templates. Which is why C++0x will probably have
              variable-length argument lists for templates.
              >From what I've seen it's more like N/X with X default parameters. For
              instance, mpl's vector is implemented in terms of a vector10, vector20,
              vector30...whic h have 10, 20, and 30 default parameters.

              Comment

              • dasjotre

                #8
                Re: Does C++ supports variable template parameters ?


                Noah Roberts wrote:
                dasjotre wrote:
                Fan Yang wrote:
                I'm reading Modern C++ Design, and it is saying "Variable template
                parameters simply don't exist."
                aka variadic template parameters
                But I find VC7.1 & VC8 support this feature.Who can tell me that which is
                right -_-b
                I am not aware of any compiler supporting variadic template parameters.
                >
                However, in practice this type of template can be created for some
                upper number of N. Look at many examples from TR1 and Boost (tuple,
                MPL, array, etc...). I'd be surprised if that book doesn't describe
                these techneques but I haven't read the whole thing and certainly don't
                know it by heart so I can't say what part the OP is talking about.
                In 'Modern C++ Design', he uses that technique to design type lists
                and function wrappers. It is tedious and best done with something like
                m4 or boost::preproce ssor. Than again, having type lists, I see no
                reason why you couldn't use them to emulate variadic template
                parameters, up to the maximum length of the type lists.

                But that is not a true variadic template like the ones you have in D.

                Comment

                • Pete Becker

                  #9
                  Re: Does C++ supports variable template parameters ?

                  Noah Roberts wrote:
                  Pete Becker wrote:
                  >Noah Roberts wrote:
                  >
                  >>However, in practice this type of template can be created for some
                  >>upper number of N. Look at many examples from TR1 and Boost (tuple,
                  >>MPL, array, etc...). I'd be surprised if that book doesn't describe
                  >>these techneques but I haven't read the whole thing and certainly don't
                  >>know it by heart so I can't say what part the OP is talking about.
                  >>>
                  >Yes, you can do it, but it's ghastly. To support 0..N arguments you have
                  >to write N+1 templates. Which is why C++0x will probably have
                  >variable-length argument lists for templates.
                  >
                  >>From what I've seen it's more like N/X with X default parameters. For
                  instance, mpl's vector is implemented in terms of a vector10, vector20,
                  vector30...whic h have 10, 20, and 30 default parameters.
                  >
                  I haven't looked at the details there, but from a glance it seems like
                  that's just part of a divide and conquer approach for the preprocessor,
                  where each of those templates in turn generates 10 template classes.

                  Sooner or later you have to decide which template arguments are real and
                  which ones aren't.

                  Of course, any program that needs to pass more than ten template
                  arguments is out of control. <g>

                  --

                  -- Pete
                  Roundhouse Consulting, Ltd. (www.versatilecoding.com)
                  Author of "The Standard C++ Library Extensions: a Tutorial and
                  Reference." (www.petebecker.com/tr1book)

                  Comment

                  • Noah Roberts

                    #10
                    Re: Does C++ supports variable template parameters ?


                    Pete Becker wrote:
                    I haven't looked at the details there, but from a glance it seems like
                    that's just part of a divide and conquer approach for the preprocessor,
                    where each of those templates in turn generates 10 template classes.
                    Possible, but it would be surprising. Compiler output from errors
                    indicate the final types contain the default values; at least when
                    using MPL vector. But I haven't done a lot of looking either.
                    >
                    Sooner or later you have to decide which template arguments are real and
                    which ones aren't.
                    >
                    Of course, any program that needs to pass more than ten template
                    arguments is out of control. <g>
                    Well, the basic dimensional analysis idiom requires something like 8 or
                    9 so more than 10 isn't really outside reason in metaprogramming .

                    Comment

                    • kwikius

                      #11
                      Re: Does C++ supports variable template parameters ?


                      Pete Becker wrote:
                      Of course, any program that needs to pass more than ten template
                      arguments is out of control. <g>
                      My compiler goes to 11...

                      (Just For the Spinal Tap fans ;-) )

                      regards
                      Andy Little

                      Comment

                      • Noah Roberts

                        #12
                        Re: Does C++ supports variable template parameters ?


                        kwikius wrote:
                        Pete Becker wrote:
                        >
                        Of course, any program that needs to pass more than ten template
                        arguments is out of control. <g>
                        >
                        My compiler goes to 11...
                        >
                        (Just For the Spinal Tap fans ;-) )
                        What's funny is my amp DOES go to 11 :P

                        Comment

                        Working...