Placement new

For advanced C++ programmers, placement new is nothing special. It can initialize a pre-allocated memory block. However, placement new is more than what you think. It accpets an arbitrary number of arguments of arbitrary types.

See the following code snippet:

#include <iostream>
#include <string>
#include <vector>

void* operator new(size_t sz, const std::string& str, const std::vector& vec) noexcept
        std::cerr << str << ' ';
        for(char c : vec)
            std::cerr << c;
    catch(...) {}
    return nullptr;

int main()
    int* p = new ("Hello", {'w', 'o', 'r', 'l', 'd'}) int;
    return 0;

That means, you can put any possible C++ type as the second argument of placement new operators.

Is it used in real cases? In fact, nothrow new operator in standard C++ utilizes this feature. See the implementation in libc++.

Another usage can be found in libgc, a C/C++ garbage collection library.