Parsing of a (Linux) netlink hotplug uevent packet
The empty line after the first #include is a little odd.  They can all be kept together and still be grouped by type (system, library, and local).

Also, consider ordering these in some way for organization, such as alphabetically.
void parameters are not needed on C++, unlike in C.
C++11 now supports list initialization, which you've mostly done here with msg.  You can omit the = to make full use of this.
This for loop is way too long horizontally:


for ( auto it3 = it2 , it4 = std::find( it2 , msg.end() , '=' ) , it5 = std::find( it4+1 , msg.end() , '\0') ; it3 != msg.end() , it4 != msg.end() , it5 != msg.end() ; it3 = it5+1 , it4 = std::find( it3 , msg.end() , '=' ) , it5 = std::find( it4 , msg.end() , '\0' ) )



You may be better off just using a while loop and making the calls to std::find() within the body of the loop.  Another option would be to wrap this line, but that may also look ugly.