//Funktionsdeklaration ax_funktions.hpp #pragma once namespace ax{ void print_number(int x) { std::cout << "Die Zahl ist: " << x << std::endl; std::cout << "Das doppelte der Zahl ist: " << x*2 << std::endl; } void print_char(char x) { std::cout << x; } int sqrt(int x){ return x*x; } char shift(char x){ return x-1; } //allgmeine Funktion Deklaration ohne Argumente oder returns für einen unbekannten Datentyp template std::string type_name(); //Spezialisierte Implementation von type_name() für einen entsprechenden Datentyp vgl. mit überladung template<> std::string type_name() {return "Integer";} template<> std::string type_name(){return "Char";} template<> std::string type_name(){return "Float";} template<> std::string type_name(){return "Double";} template<> std::string type_name(){return "Bool";} template void ausgebene(T a){ std::cout << a << " ist vom Type " << type_name()<< std::endl ; } //CallByRefference int fn_CtUp (int &a){ a = ++a; return 1; } }