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. General Programming
  3. C / C++ / MFC
  4. Templates

Templates

Scheduled Pinned Locked Moved C / C++ / MFC
wpfquestion
14 Posts 5 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.
  • R Offline
    R Offline
    Russell
    wrote on last edited by
    #1

    Hi, Is it possible to use tests on the template typename(during compile, not in runtime)? Something like: template<typename T> class MyClass{ ... T m_Var; ... void fun(){ #if T==double .... #else .. #endif } } Cheers, Russell

    T O M 3 Replies Last reply
    0
    • R Russell

      Hi, Is it possible to use tests on the template typename(during compile, not in runtime)? Something like: template<typename T> class MyClass{ ... T m_Var; ... void fun(){ #if T==double .... #else .. #endif } } Cheers, Russell

      T Offline
      T Offline
      toxcct
      wrote on last edited by
      #2

      no, because T is assigned at runtime, while #if is evaluated before the compilation BTW, there's a mechanism called templates specializations, which allow you to design the templated class for a particuliar template parameter...


      TOXCCT >>> GEII power

      [VisualCalc 3.0  updated ][Flags Beginner's Guide  new! ]

      R N 2 Replies Last reply
      0
      • R Russell

        Hi, Is it possible to use tests on the template typename(during compile, not in runtime)? Something like: template<typename T> class MyClass{ ... T m_Var; ... void fun(){ #if T==double .... #else .. #endif } } Cheers, Russell

        O Offline
        O Offline
        Oliver Anhuth
        wrote on last edited by
        #3

        template<typename T> class MyClass; template<> class MyClass<double> { ... T m_Var; ... void fun(){ // your double work } }; template<> class MyClass<int> { ... T m_Var; ... void fun() { // your int work } };

        -- modified at 4:08 Thursday 20th July, 2006

        1 Reply Last reply
        0
        • T toxcct

          no, because T is assigned at runtime, while #if is evaluated before the compilation BTW, there's a mechanism called templates specializations, which allow you to design the templated class for a particuliar template parameter...


          TOXCCT >>> GEII power

          [VisualCalc 3.0  updated ][Flags Beginner's Guide  new! ]

          R Offline
          R Offline
          Russell
          wrote on last edited by
          #4

          toxcct wrote:

          T is assigned at runtime

          I'm not sure, are you? templates are expanded during compilation. Elseway have you got a good link to learn something on "templates specializations". Thanks. Cheers, Russell

          T 1 Reply Last reply
          0
          • R Russell

            toxcct wrote:

            T is assigned at runtime

            I'm not sure, are you? templates are expanded during compilation. Elseway have you got a good link to learn something on "templates specializations". Thanks. Cheers, Russell

            T Offline
            T Offline
            toxcct
            wrote on last edited by
            #5

            hum, ok, maybe not at runtime, but at compile time at least. unfortunately, preprocessing directives are executed BEFORE the compilation... so, no chance to do it like this


            TOXCCT >>> GEII power

            [VisualCalc 3.0  updated ][Flags Beginner's Guide  new! ]

            R 1 Reply Last reply
            0
            • T toxcct

              hum, ok, maybe not at runtime, but at compile time at least. unfortunately, preprocessing directives are executed BEFORE the compilation... so, no chance to do it like this


              TOXCCT >>> GEII power

              [VisualCalc 3.0  updated ][Flags Beginner's Guide  new! ]

              R Offline
              R Offline
              Russell
              wrote on last edited by
              #6

              yes, I know that I can't use preprocessing directives, It was only an sintax example: I'm asking exacly on the template sintax that it can be used. Cheers, Russell

              T 1 Reply Last reply
              0
              • R Russell

                yes, I know that I can't use preprocessing directives, It was only an sintax example: I'm asking exacly on the template sintax that it can be used. Cheers, Russell

                T Offline
                T Offline
                toxcct
                wrote on last edited by
                #7

                then search for "template specializations"


                TOXCCT >>> GEII power

                [VisualCalc 3.0  updated ][Flags Beginner's Guide  new! ]

                1 Reply Last reply
                0
                • T toxcct

                  no, because T is assigned at runtime, while #if is evaluated before the compilation BTW, there's a mechanism called templates specializations, which allow you to design the templated class for a particuliar template parameter...


                  TOXCCT >>> GEII power

                  [VisualCalc 3.0  updated ][Flags Beginner's Guide  new! ]

                  N Offline
                  N Offline
                  NrmMyth
                  wrote on last edited by
                  #8

                  toxcct wrote:

                  because T is assigned at runtime

                  Templates ane not .NET generics. Compiler generates all specializations for used parameters. template class CLS; CLS aaa; CLS > bbb; At compile time, this will create double and vector specializations for template.

                  T 1 Reply Last reply
                  0
                  • N NrmMyth

                    toxcct wrote:

                    because T is assigned at runtime

                    Templates ane not .NET generics. Compiler generates all specializations for used parameters. template class CLS; CLS aaa; CLS > bbb; At compile time, this will create double and vector specializations for template.

                    T Offline
                    T Offline
                    toxcct
                    wrote on last edited by
                    #9

                    WTF :omg::wtf: what are you talking about ?

                    NrmMyth wrote:

                    Templates ane not .NET generics.

                    where have you seen me saying this ? and what is the point in saying this to me ? do you criticise my answer ? do you suggest something better than what i did ? :~ :suss:


                    TOXCCT >>> GEII power

                    [VisualCalc 3.0  updated ][Flags Beginner's Guide  new! ]

                    N 1 Reply Last reply
                    0
                    • T toxcct

                      WTF :omg::wtf: what are you talking about ?

                      NrmMyth wrote:

                      Templates ane not .NET generics.

                      where have you seen me saying this ? and what is the point in saying this to me ? do you criticise my answer ? do you suggest something better than what i did ? :~ :suss:


                      TOXCCT >>> GEII power

                      [VisualCalc 3.0  updated ][Flags Beginner's Guide  new! ]

                      N Offline
                      N Offline
                      NrmMyth
                      wrote on last edited by
                      #10

                      You gave an wrong information. I think that everyone has a right to correct you.

                      T 1 Reply Last reply
                      0
                      • N NrmMyth

                        You gave an wrong information. I think that everyone has a right to correct you.

                        T Offline
                        T Offline
                        toxcct
                        wrote on last edited by
                        #11

                        NrmMyth wrote:

                        I think that everyone has a right to correct you.

                        of course ! but not only he doesn't explain where i was wrong but he also "repeats" words that i never said ! :( where have you heard me saying that templates were .NET specifics ? :mad:


                        TOXCCT >>> GEII power

                        [VisualCalc 3.0  updated ][Flags Beginner's Guide  new! ]

                        N 1 Reply Last reply
                        0
                        • T toxcct

                          NrmMyth wrote:

                          I think that everyone has a right to correct you.

                          of course ! but not only he doesn't explain where i was wrong but he also "repeats" words that i never said ! :( where have you heard me saying that templates were .NET specifics ? :mad:


                          TOXCCT >>> GEII power

                          [VisualCalc 3.0  updated ][Flags Beginner's Guide  new! ]

                          N Offline
                          N Offline
                          NrmMyth
                          wrote on last edited by
                          #12

                          I aplogize for every mental pain I caused. Please accept it.

                          T 1 Reply Last reply
                          0
                          • N NrmMyth

                            I aplogize for every mental pain I caused. Please accept it.

                            T Offline
                            T Offline
                            toxcct
                            wrote on last edited by
                            #13

                            nevermind


                            TOXCCT >>> GEII power

                            [VisualCalc 3.0  updated ][Flags Beginner's Guide  new! ]

                            1 Reply Last reply
                            0
                            • R Russell

                              Hi, Is it possible to use tests on the template typename(during compile, not in runtime)? Something like: template<typename T> class MyClass{ ... T m_Var; ... void fun(){ #if T==double .... #else .. #endif } } Cheers, Russell

                              M Offline
                              M Offline
                              Michael Dunn
                              wrote on last edited by
                              #14

                              http://www.parashift.com/c++-faq-lite/templates.html#faq-35.7

                              --Mike-- Visual C++ MVP :cool: LINKS~! Ericahist | PimpFish | CP SearchBar v3.0 | C++ Forum FAQ

                              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