#include <iostream>
#include <deque>
#include <algorithm>
template< typename T >
class fixed_stack : public std::deque< T >
{
public:
fixed_stack( int ms ) : max_size( ms ), std::deque< T >() {}
void push_front( const T & v )
{
if ( std::deque< T >::size() == max_size )
std::deque< T >::pop_back();
std::deque< T >::push_front( v );
}
void dump() const
{
std::for_each( std::deque< T >::begin(), std::deque< T >::end(), std::mem_fun( dumpElem ) );
}
private:
void dumpElem( const T & e ) const
{
std::cout << e << " ";
}
int max_size;
};
int main( int c, char *v[] )
{
fixed_stack< int > fs( 5 );
fs.dump();
}
error: argument of type ‘void (fixed_stack<int>::)(const int&)const’ does not match ‘void (fixed_stack<int>::*)(const int&)const'