Just a question - why the (std::declval< void * >()) in the noexcept? This also seems overly complex to me; since this is for emplace_back (which uses placement-new), the only thing that can throw is the actual constructor itself - thus I would expect a noexcept specification of type {std::declval<arguments>()...} (and similarly for the single argument case).
@SimonAndréForsberg I can't test it as it is written without adding to it, as both /*Unweighted Graph */ def addedge(s: Vertex, d: Vertex): Unit //Weighted Graph */ def addedge(s: Vertex, d: Vertex, w: Int): Unit
I've recently been fiddling around with a type safe implementation of cartesian co-ordinates (and a few operations on those co-ordinates). Often it's easy to get units mixed up: is something in metres, or in some other unit?
The idea for this code is to provide a framework to catch all such erro...