TL;TR:升级到 clang-format 7.0 或更高版本。
clang-format 7.0 附带了与尾随返回相关的修复,因此您应该能够实现所需的格式:
之前
template <int K, typename E, typename L, int N>
auto ccccccccccccccccccccccc(detail::base<E, L, N>& p) -> std::add_lvalue_reference<E>::type;
之后:
template <int K, typename E, typename L, int N>
auto ccccccccccccccccccccccc(detail::base<E, L, N> &p)
-> std::add_lvalue_reference<E>::type;
相关的是一个微妙的问题,clang-format 7 仍然受到https://bugs.llvm.org/show_bug.cgi?id=42835 的影响,并且如果使用了typename,它不会缩进尾随返回的中断:
之前:
template <int K, typename E, typename L, int N>
auto bbbbbbbbbbbbbbbbbbbbbbb(detail::base<E, L, N>& p) -> typename std::add_lvalue_reference<E>::type;
之后:
template <int K, typename E, typename L, int N>
auto bbbbbbbbbbbbbbbbbbbbbbb(detail::base<E, L, N> &p) ->
typename std::add_lvalue_reference<E>::type;
相关邮件列表线程:[cfe-users] [clang-format] Trailing return type