new foo is no more suitable than std::vectoir<foo>: It will always call the constructors, sequentially.
For a quick proof-of-concept (e,g, to compare those different frameworks you listed), I would allocate raw memory (using allocator_traits<>::allocate() or std::get_temporary_buffer() or newchar)), and then construct (using allocator_traits<>::construct() or placement new) in parallel, preferably with each thread owning a contiguous cache-aligned subrange.
While I agree with this approach I would like to keep the object construction and destruction outside of the main loop. I am just debating if it is better just to override the new operator or create an array class similar to the C++ std::vector class without giving the ability to grow after it is created
Yes notation is valid but there are two problem with using std::array one the constructor still must be overridden to call object constructors and destructors in parallel and two this is only supported in C++ 11. In this case I would like to avoid some C++ 11 constructs with the exception for implementations for some of the parallelization libraries C++ AMP, C++ threads, and Microsoft's Parallel Patterns Library. I would like to hear some other opinions before finalizing this test project
Eventually I want to bring the code into an application. When I am using the class I want prevent from using the new and the delete operators unless I can overload constructor and destructors calling feature of new and the delete operators. Forcing myself and other who will maintain the application to use the proper classes. I am not blocking the new and delete operators for creating objects dynamically.
Thank you everyone I have created my test application using a serial array and an OpenMP array. I could not used construct C++ AMP Array due to AMP's limitation or not allowing constructors to be called in AMP. I am also having some problems with Parallel Patterns Library. Please reply if you want to know the results