ptb*_*ptb 17 c++-concepts clang-format c++20
我查看了 clang-format 样式选项https://clang.llvm.org/docs/ClangFormatStyleOptions.html但没有看到任何对 c++ 概念和需要子句的引用。通常我可以配置 clang-format 来做我想做的事,但我不知道如何让它很好地处理我的概念和需要条款:
template <typename F, typename P, typename T>
concept Accumulate_Fn = Parser<P>&& std::invocable<F, T, parser_t<P>>&&
std::same_as<T, std::invoke_result_t<F, T, parser_t<P>>>;
Run Code Online (Sandbox Code Playgroud)
但是我想将每个约束放在自己的行上(就像它处理太长的函数参数一样),以便结果如下所示:
template <typename F, typename P, typename T>
concept Accumulate_Fn = Parser<P> &&
std::invocable<F, T, parser_t<P>> &&
std::same_as<T, std::invoke_result_t<F, T, parser_t<P>>>;
Run Code Online (Sandbox Code Playgroud)
template <Parser P1, Parser P2, typename T, Accumulate_Fn<P1, parser_t<P1>> F>
requires std::same_as<T, parser_t<P1>> constexpr Parser auto
separated_by(P1&& p1, P2&& p2, T&& init, F&& f)
Run Code Online (Sandbox Code Playgroud)
但我想要更接近的东西:
template <Parser P1, Parser P2, typename T, Accumulate_Fn<P1, parser_t<P1>> F>
requires std::same_as<T, parser_t<P1>>
constexpr Parser auto separated_by(P1&& p1, P2&& p2, T&& init, F&& f)
Run Code Online (Sandbox Code Playgroud)
有什么神奇的选择可以使之奏效吗?我目前在使用 clang-format 10.0.0 格式。