如何使 clang-format 11 在可变参数模板声明之后放置 space
How to make clang-format 11 put a space after variadic template decleration
我不确定发生了什么以及如何准确描述它。这是源代码
template <typename ...Args>
void foo(Args &&...args)
{
bar(std::forward<Args>(args)...);
}
我的朋友在 Ubuntu 上使用 clang-format 10 生成了这个
template <typename ... Args>
void foo(Args &&... args)
{
bar(std::forward<Args>(args)...);
}
但是我在 Arch 上使用相同 .clang-format
文件的 clang-format 11 生成了以下内容:
template <typename ...Args>
void foo(Args &&...args)
// ^^^^ Notice the missing space after ...
{
bar(std::forward<Args>(args)...);
}
我没有在 clang-fotmat 11's changelog 中发现可疑的变化。我错过了什么?
由于我遇到了同样的问题,经过一些 git bisect
ing,我找到了引入此更改的提交:https://reviews.llvm.org/D83564
clang-format does not obey PointerAlignment: Right
for ellipsis in declarator for pack
此更改背后的原因是您可以考虑注释 &&...
类型 (PointerAlignment: Left
) 或变量 (PointerAlignment: Right
) 的一部分,或者如果您愿意,把它放在中间 (PointerAlignment: Middle
)。此更改旨在防止 &&
和 &&...
参数(包)之间的不一致,其格式如下
template <typename Arg, typename ...Args>
void foo(Arg &&arg, Args &&... args)
{
bar(std::forward<Args>(args)...);
}
使用较旧的 clang 格式,但像这样
template <typename Arg, typename ...Args>
void foo(Arg &&arg, Args &&...args)
{
bar(std::forward<Args>(args)...);
}
最近的一个。
我不确定发生了什么以及如何准确描述它。这是源代码
template <typename ...Args>
void foo(Args &&...args)
{
bar(std::forward<Args>(args)...);
}
我的朋友在 Ubuntu 上使用 clang-format 10 生成了这个
template <typename ... Args>
void foo(Args &&... args)
{
bar(std::forward<Args>(args)...);
}
但是我在 Arch 上使用相同 .clang-format
文件的 clang-format 11 生成了以下内容:
template <typename ...Args>
void foo(Args &&...args)
// ^^^^ Notice the missing space after ...
{
bar(std::forward<Args>(args)...);
}
我没有在 clang-fotmat 11's changelog 中发现可疑的变化。我错过了什么?
由于我遇到了同样的问题,经过一些 git bisect
ing,我找到了引入此更改的提交:https://reviews.llvm.org/D83564
clang-format does not obey
PointerAlignment: Right
for ellipsis in declarator for pack
此更改背后的原因是您可以考虑注释 &&...
类型 (PointerAlignment: Left
) 或变量 (PointerAlignment: Right
) 的一部分,或者如果您愿意,把它放在中间 (PointerAlignment: Middle
)。此更改旨在防止 &&
和 &&...
参数(包)之间的不一致,其格式如下
template <typename Arg, typename ...Args>
void foo(Arg &&arg, Args &&... args)
{
bar(std::forward<Args>(args)...);
}
使用较旧的 clang 格式,但像这样
template <typename Arg, typename ...Args>
void foo(Arg &&arg, Args &&...args)
{
bar(std::forward<Args>(args)...);
}
最近的一个。