online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code    Language
// aktuelle VS2017 Version, oder GCC 8.2, C++14 oder C++17 waere moeglich #include <tuple> #include <vector> #include <cassert> template<typename Value> struct in_parameter_t { in_parameter_t(void* value) {} }; template<typename Value> struct out_parameter_t { out_parameter_t(void* value) {} }; template<typename Value> struct inout_parameter_t { inout_parameter_t(void* value) {} }; template<typename ValueType> struct parameter_type_t {}; template<> struct parameter_type_t<int> { using type = in_parameter_t<int>; }; template<> struct parameter_type_t<int&> { using type = inout_parameter_t<int>; }; using parameter_t = std::vector<void*>; /* // Versuch Frage 2 zu beantworten - aber ausser viele viele Varianten von Kompilefehler komme ich da nicht weiter namespace detail { template <typename TupleType_TP, size_t... Indices_TPs> auto get_parameter(parameter_t& parameter, std::index_sequence<Indices_TPs...>) { //return TupleType_TP(parameter[Indices_TPs]...); return TupleType_TP({ nullptr, nullptr }); } } template <typename... Types_TPs> auto get_parameter(parameter_t& parameter) { return detail::get_parameter<std::tuple<Types_TPs...>>(parameter, std::index_sequence_for<Types_TPs...>()); } */ int main() { //------ // Kompilezeit-Parameter // Methoden-Parameter-Typen using native_parameter_types = std::tuple<int,int&>; //------ // Laufzeit-Parameter int p0 = 0; int p1 = 0; parameter_t parameter{&p0, &p1}; // muss ein std::vector sein (std::array ist zu fix) // zur Laufzeit garantiert das zu jedem native_parameter_types[x] ein parameter[x] existiert assert(parameter.size() == std::tuple_size<native_parameter_types>::value); //------ // hier kommen mein Fragen // aus dem nativen typ einen adapter typ erzeugen using parameter_types_t = std::tuple < parameter_type_t<std::tuple_element<0, native_parameter_types>::type>::type, parameter_type_t<std::tuple_element<1, native_parameter_types>::type>::type >; //====> FRAGE 1: geht das auch mit einer Template-Funktion? //so in der Art? //using parameter_types_t = get_parameter_types<native_parameter_types>::types; // die adapter mit dem parameter-pointer instanzieren auto p = parameter_types_t ( parameter[0], parameter[1] ); //====> FRAGE 2: geht das auch mit einer Template-Funktion? //so in der Art? //auto p = get_parameter<parameter_types_t>(parameter); return 0; }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue