For homework I'm apparently supposed to implement some functions defined in <algorithm> . So this is what I have so far:

template <class I> bool m_equal( I b, I e, I b2 )                                                                                                                                                                   
{                                                                                                                                                                                                                   
    for ( ; b != e && b == b2; b++, b2++ );                                                                                                                                                                         
    return b == b2;                                                                                                                                                                                                 
}                                                                                                                                                                                                                   
template <class I, class T> I m_find( I b, I e, const T c )                                                                                                                                                         
{                                                                                                                                                                                                                   
    for ( ; b != e && *b != c; b++ );                                                                                                                                                                               
    return b;                                                                                                                                                                                                       
}                                                                                                                                                                                                                   
template <class I, class T> void m_copy( I b,I e, I d )                                                                                                                                                             
{                                                                                                                                                                                                                   
    while ( b != e ) *d++ = *b++;                                                                                                                                                                                   
}                                                                                                                                                                                                                   
template <class I, class T> void m_remove_copy_if (I b, I e, I d, T p)                                                                                                                                              
{                                                                                                                                                                                                                   
    for ( ; b != e; b++ ) if ( !p( b ) ) *d++ = *b;                                                                                                                                                                 
}

My compile command is:

cc ex0.cpp -o ex0

And the error log:

/tmp/ccvD4Xto.o: In function `std::__verify_grouping(char const*, unsigned int, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
ex0.cpp:(.text+0x3c): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size() const'
ex0.cpp:(.text+0x87): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator[](unsigned int) const'
ex0.cpp:(.text+0xc5): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator[](unsigned int) const'
ex0.cpp:(.text+0x10d): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator[](unsigned int) const'
/tmp/ccvD4Xto.o: In function `__static_initialization_and_destruction_0(int, int)':
ex0.cpp:(.text+0x157): undefined reference to `std::ios_base::Init::Init()'
/tmp/ccvD4Xto.o: In function `__tcf_0':
ex0.cpp:(.text+0x1a4): undefined reference to `std::ios_base::Init::~Init()'
/tmp/ccvD4Xto.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status

What is exactly is the problem? Thanks for help in advance.

Using a C compiler to compile C++ code.
The compiler driver will correctly invoke the correct compiler, but will fail to add on the correct libraries.

What command other than 'cc' should you use?

This question has already been answered. Start a new discussion instead.