Hi Lua-l,
1. Avoid any preprocessing and macros (only vanilla C++11 allowed)
2. Strive for a clean interface aggressively leveraging C++ type deduction
3. Adhere to RAII principles so that temporaries are bound to their appropriate owners, be the lua context, a table, or what have you.
There is an accompanying 3 part blog series in the README if you are interested in the implementation details.
Cheers,
Jeremy