Casting to void is used to signal that the author knows there is an "unused" value or variable (useful if there is a lint-like tool somewhere in the tool-chain.)
As for the other, MSVC doesn't fully support compound literals so the using directive is probably a work around for that (I'm not entirely sure what the C++ standard says about compound literals - most things I found when searching referenced the C99 standard.) If it did support it, the syntax would be a bit off. See: http://en.cppreference.com/w/c/language/compound_literal