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.
The purpose of this exercise is to find a way to initialize 10,000+ foo objects using a parallel process such as C++ AMP, OpenMP, Threading Building Blocks, or Microsoft's Parallel Patterns Library.
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
I have made a decision to create several array classes based on the std::vector and std::array classes but I would like to disable the global new [] operator
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