Variadic Template - Funktionsweise und Castring mechanismus



  • Hallo,

    mich würde mal interessieren, wo bei den Variadic Templates gecastet wird,
    und ob man auf die Typumwandlung einfluß hat.

    Also zum Beispiel

    template <typename T1,size_t D>
    class leaf
    {
      public:
        template<typename... T2>
        leaf(T1 const val,T2... args);
        leaf(T1 const val);
    
      private:
        unsigned char c;
        T1 _data[D];
    };
    
    template <typename T1, size_t D>
    template<typename... T2>
    leaf<T1,D>::leaf(T1 const val, T2... args)
    {
        std::cout <<"\nval\t" << val <<"typeid(val)" << typeid(val).name() <<"\ttypeid(double)" <<typeid(double).name() ;
        std::cout <<"\n sizeof...(args)" <<sizeof...(args);
        std::cout <<"\n sizeof...(args)" <<sizeof...(T2);
        leaf<T1, D>(args...);
    }
    
    template <typename T1, size_t D>
    leaf<T1,D>::leaf(T1 const val)
    {
        std::cout <<"\nval\t" << val <<"typeid(val)" << typeid(val).name()  <<"\ttypeid(double)" <<typeid(double).name();
    
    }
    

    Wenn in nun Folgendes Instanziere:

    leaf<double,3> _leaf( 0.1, (short) 10.01 , (char)1.1 , 1 , 1.234);
    

    Werden die Ganzzahl Typen wieder nach double gecastet.
    Gibt es denn eine Möglichkeit, auf die Typumwandlung Eifluß zu nehmen ??

    Ev. um etwas in der Richtung

    leaf<EigenerTyp,3> _leaf(EigenerTyp::KOnstruktor(Argumente), EigenerTyp::KOnstruktor(Argumente) ,etc);
    

    zu instanzieren ??

    Grüße


Anmelden zum Antworten