online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
#ifdef __cplusplus #include <iostream> #endif class input_iterator_tag {}; class forward_iterator_tag : public input_iterator_tag {}; class bidirectional_iterator_tag : public forward_iterator_tag {}; class random_access_iterator_tag : public bidirectional_iterator_tag {}; template<typename _Iterator, typename _Tp> _Iterator set_value(const _Iterator &it, _Tp &value, const forward_iterator_tag* tag){ printf("2\r\n"); return set_value(it, value, (input_iterator_tag*)NULL); }; template<typename _Iterator, typename _Tp> _Iterator set_value(const _Iterator &it, _Tp &value, const bidirectional_iterator_tag* tag){ printf("3\r\n"); return set_value(it, value, (forward_iterator_tag*)NULL); }; template<typename _Iterator, typename _Tp> _Iterator set_value(const _Iterator &it, _Tp &value, const random_access_iterator_tag* tag){ printf("4\r\n"); return set_value(it, value, (bidirectional_iterator_tag*)NULL); }; template<typename _Iterator, typename _Tp> _Iterator set_value(const _Iterator &val, _Tp &value, const input_iterator_tag* tag){ printf("1\r\n"); return val; }; template<typename _Iterator, typename _Tp> _Iterator set_value(const _Iterator &it, _Tp &value){ return set_value(it, value, it.tag); //Error: 'set_value' - ambiguous call to overloaded function }; template<typename T> struct A{ T data; static random_access_iterator_tag* tag; }; template<typename T> random_access_iterator_tag* A<T>::tag = NULL; class B{}; void OnStart (){ A<B*> it; const B* const b_ptr = new B(); set_value(it, b_ptr); //Compile Error A<int> it_int; const int value_int = 5; set_value(it, value_int); } 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