AIB 2017-07: Meta Adjoint Programming in C++