clang-format:C ++中的PointerAlignment 14带有广义捕获的lambda函数参数

时间:2018-03-26 22:41:50

标签: c++ clang-format

考虑以下clang-format ted函数:

template <typename K>
void zxcv(int a, K&& k) {
    return [ a, k{std::move(k)} ](C::c & x) mutable { return a * k(x); };
    //                                ^ oh no an extra space
}

似乎clang-format错误地将&中的运算符C::c & x视为二元运算符而不是一元&。因此,它左侧有一个额外的空间。

但是,当k按值而非移动时捕获时,&会根据需要左对齐,并且方括号中没有多余的空格:

template <typename K>
void zxcv(int a, K&& k) {
    return [a, k](C::c& x) mutable { return a * k(x); };
    //                ^ hooray left aligned as desired
}

我正在使用:

$ clang --version
clang version 3.8.0-2ubuntu4 (tags/RELEASE_380/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

$ clang-format --version
clang-format version 3.8.0-2ubuntu4 (tags/RELEASE_380/final)

$ cat ~/.clang-format
BasedOnStyle: Google
IndentWidth: 4
Language: Cpp
DerivePointerAlignment: false
PointerAlignment: Left
Cpp11BracedListStyle: true

据我所知,自version 3.4以来,Clang应该很好地支持初始化的lambda捕获。

我应该如何clang-format左右对齐我的&符号?

0 个答案:

没有答案