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