/* Example programs from the book Scientific and Engineering Programming in C++: An Introduction with Advanced Techniques and Examples, Addison-Wesley, 1994. (c) COPYRIGHT INTERNATIONAL BUSINESS MACHINES CORPORATION 1994. ALL RIGHTS RESERVED. See README file for further details. */ template ConcreteFormedArray1d:: ConcreteFormedArray1d() : ConcreteArray1d(SubscriptArray<1>(0), 0) { } template ConcreteFormedArray1d:: ConcreteFormedArray1d(Subscript s0) : ConcreteArray1d(SubscriptArray<1>(s0), 0) { setSizeOnHeap(s0); } template ConcreteFormedArray1d:: ConcreteFormedArray1d(const ConcreteFormedArray1d& a) : ConcreteArray1d(SubscriptArray<1>(a.shape(0)), 0) { setSizeOnHeap(a.numElts()); concreteCopy(*this, a); } template ConcreteFormedArray1d:: ConcreteFormedArray1d(ConcreteArray1dConstRef a) : ConcreteArray1d(SubscriptArray<1>(a.shape(0)), 0) { setSizeOnHeap(a.numElts()); concreteCopy(*this, a); } template ConcreteFormedArray1d:: ConcreteFormedArray1d(ConcreteArray1dConstRef::ProjectionT, T> a) : ConcreteArray1d(SubscriptArray<1>(a.shape(0)), 0) { setSizeOnHeap(a.numElts()); concreteCopy(*this, a); } template ConcreteFormedArray1d::~ConcreteFormedArray1d() { delete[] datap; } template ConcreteFormedArray1d& ConcreteFormedArray1d::operator=(const ConcreteFormedArray1d& rhs) { concreteCopy(*this, rhs); return *this; } template ConcreteFormedArray1d& ConcreteFormedArray1d::operator=(ConcreteArray1dConstRef rhs) { concreteCopy(*this, rhs); return *this; } template ConcreteFormedArray1d& ConcreteFormedArray1d::operator=(const T& rhs) { ConcreteArray1d, T>::operator=(rhs); return *this; }