在c ++ 20概念中使用clang格式

点对点

我已经看过clang格式样式选项https://clang.llvm.org/docs/ClangFormatStyleOptions.html,但是看不到对c ++概念和require子句的任何引用。通常,我可以配置clang-format来执行我想要的操作,但是我不知道如何使用它来处理我的概念并很好地要求子句:

  1. 目前,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>>>;

但是我想将每个约束放在自己的行上(就像对于太长的函数参数所做的那样),以便结果看起来像:

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>>>;
  1. 对于带有require子句的函数,clang-format当前给我:
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)

但是我想要更接近的东西:

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)

是否有任何神奇的选择可以使它起作用?我目前使用的是clang格式10.0。

爱德华多·科斯塔(Eduardo Costa)

从7月20日起,尚未正确支持Concepts clang-formatLLVM跟踪器中有一个未解决的问题

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章