online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
#include <iostream> #include <map> #include <vector> #include <typeindex> #include <any> #include <functional> struct RequestA{}; struct RequestB{}; struct RequestC{}; class RequestHandler { public: void tick() { std::cout<<"tick called"<<std::endl; } private: std::vector<RequestA> queueA; std::vector<RequestB> queueB; std::vector<RequestC> queueC; //create std::map - STEP 1 std::map<std::type_index, std::any> myMap{{typeid(RequestA), std::ref(queueA)}, {typeid(RequestB), std::ref(queueB)}, {typeid(RequestC), std::ref(queueC)}}; public: //create member function template - STEP 2 template<typename T> void add(T Arg); }; template<typename T> void RequestHandler::add(T Arg) // - STEP 3 { std::cout << "add called on " <<typeid(Arg).name() << std::endl;//just for debugging purposes std::cout << "size before push_back "<< std::any_cast<std::reference_wrapper<std::vector<T>>>(myMap.at(typeid(T))).get().size()<<std::endl;//just for debugging std::any_cast<std::reference_wrapper<std::vector<T>>>(myMap.at(typeid(T))).get().push_back(Arg); std::cout << "size after push_back "<< std::any_cast<std::reference_wrapper<std::vector<T>>>(myMap.at(typeid(T))).get().size()<<std::endl; std::cout<<"--------------------------------------"<<std::endl; } int main() { RequestA A; RequestB B; RequestC C; RequestHandler rq; //call RequestHandler's add method simulating the requests rq.add(A); rq.add(B); rq.add(B); rq.add(C); }

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