#include <iostream>
#include <initializer_list>
#include <vector>

template<class T> class Matrix {
public:
	Matrix() {std::cout << "Matrix() " << this << std::endl;}
	Matrix(int width,int height):w(width),h(height) {std::cout << "Matrix(" << w << "x" << h << ") " << this << std::endl;}
	~Matrix() {std::cout << "Matrix(" << w << "x" << h << ") " << this << " goodbye" << std::endl;}
private:
	int w,h;
};

class NN {
public:
	NN()=default;
	NN(const std::initializer_list<size_t> &l);
private:
	std::vector<Matrix<double>> m_weights;
};

NN::NN(const std::initializer_list<size_t> &l) {
	m_weights.reserve(l.size()-1); // or deal with move constructors
	auto itr = l.begin();
    for (auto next = itr + 1; next != l.end(); ++next, ++itr)
    {
        m_weights.emplace_back(*next, *itr);
    }
}

int main() {
	NN test{2,3,3,2};
	return 0;
}
