#include <iostream>
#include <fstream>
#include <core/vector/VectorT.h>
#include <limits>

using namespace std;
using namespace NICE;

template<class ElementType>
class SparseVectorT : public VectorT<ElementType> {
	size_t dsize;
public:
	SparseVectorT(const size_t size, const ElementType& element):VectorT<ElementType>(size,element){dsize = 5;}
	virtual inline size_t size() const { return dsize; }
};


void printit(VectorT<double> &e)
{
	//cout << e.size() << endl;
	size_t a = 0;
	for(int i = 0; i < numeric_limits<int>::max(); i++)
	{
		a = e.size();
	}
}

int main(int argc, char **argv)
{
	VectorT<double> k(2,2.0);
	/*cout << "print1 vector:" << endl;
	cout << e.size()<< endl;*/

	//SparseVectorT<double> k(2,2.0);
/*	cout << "print2 sparse:" << endl;
	cout << k.size()<< endl;*/
/*
	cout << "print3 vectormethode:" << endl;
	printit(e);

	cout << "print4 sparsemethode:" << endl;*/
	printit(k);
	return 0;
}

/*

class Elter
{
protected:
	int t1;
	int t2;

public:
	Elter():t1(1),t2(2){}
	virtual void print(){cout << "t1: " << t1 << endl;}
};

class Kind:public Elter
{
public:
	Kind(){t1 = 3; t2 = 4;}
	virtual void print(){cout << "t2: " << t2 << endl;}
};

void printit(Elter &e)
{
	e.print();
}

int main(int argc, char **argv)
{
	Elter e;
	cout << "print1 elter:" << endl;
	e.print();

	Kind k;
	cout << "print2 kind:" << endl;
	k.print();

	cout << "print3 eltermethode:" << endl;
	printit(e);


	cout << "print3 kindmethode:" << endl;
	printit(k);
	return 0;
}
*/