This introduces unnecessary boilerplate when using a function like `Rf_translateCharUTF8` which returns `const char*`: https://github.com/r-lib/cpp11/blob/030f91dd0ffedb82eb89f0a6c59d712d1766099f/inst/include/cpp11/as.hpp#L134-L136 It would be fairly straightforward to extend these to allow: ```c++ return unwind_protect([&] { return Rf_translateCharUTF8(STRING_ELT(from, 0)); })[0]; ``` Or even (provided `STRING_ELT` doesn't require protection): ```c++ return safe[Rf_translateCharUTF8](STRING_ELT(from, 0))[0]; ```