online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
/****************************************************************************** Online C++ Compiler. Code, Compile, Run and Debug C++ program online. Write your code in this editor and press "Run" button to compile and execute it. *******************************************************************************/ #include <iostream> #include <vector> using namespace std; #define PRINT(x) ; Print(#x, ":", string(x)) template<typename T> class TailArray{ protected: int m_index; std::vector<T> data; protected: TailArray(){} public: TailArray(int size){ data.resize(size); m_index = 0; }; T value(){ int index = m_index; m_index = 0; return data[index]; } const T operator=(T value){ data[m_index] = (T)value; m_index = 0; return value; }; }; template<typename T> class NodeArray : public T{ protected: int m_range; protected: NodeArray(){} public: NodeArray(const NodeArray &src){ this->operator=(src);} template<typename T_int> NodeArray(T_int count, T_int r1) : T(count * r1), m_range(r1){} template<typename T_int> NodeArray(T_int count, T_int r1, T_int r2) : T(count * r1, r2), m_range(r1){} template<typename T_int> NodeArray(T_int count, T_int r1, T_int r2, T_int r3) : T(count * r1, r2, r3), m_range(r1){} T& operator[](int index){ this->m_index = this->m_index * this->m_range + index; return *this; } }; #define MultiArray(type, size) MultiArray##size(type) #define MultiArray2(type) NodeArray<NodeArray<TailArray<type>>> #define MultiArray3(type) NodeArray<NodeArray<NodeArray<TailArray<type>>>> template<typename T> class MultiArrayCreate{ public: static MultiArray(T, 2) Size(int range_1, int range_2){ return (MultiArray(T, 2)(range_1, range_2, 1)); } static MultiArray(T, 3) Size(int range_1, int range_2, int range_3){ return (MultiArray(T, 3)(range_1, range_2, range_3, 1)); } }; void OnStart(){ MultiArray(int, 2) arr_2 = MultiArrayCreate<int>::Size(4, 4); MultiArray(int, 3) arr_3 = MultiArrayCreate<int>::Size(4, 4, 4); arr_2[0][0] = 2233; arr_3[3][3][3] = 4455; printf("%d\r\n", arr_2[0][0].value()); printf("%d\r\n", arr_3[3][3][3].value()); } int main() { OnStart(); 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