Chế độ Emacs C++ mặc định (cc-mode
) vẫn không nhận ra nhiều tính năng C++ 11. Một vấn đề gây phiền nhiễu là nó sử dụng quá nhiều thụt đầu dòng để các hàm lambda sử dụng như thông số chức năng:Emacs thụt vào hàm lambda C++ 11 (chế độ cc)
std::vector<int> ar(4);
std::generate_n(std::begin(ar), 4, [] {
static int g_i;
return g_i++;
});
std::for_each(std::begin(ar), std::end(ar), [](int i) {
std::cout << " " << i;
});
bool b = std::is_sorted(std::begin(ar), std::end(ar), [&](int l, int r) {
return l<r;
});
std::cout << " " << b << "\n";
Lý tưởng nhất, người ta sẽ thích:
std::vector<int> ar(4);
std::generate_n(std::begin(ar), 4, [] {
static int g_i;
return g_i++;
});
std::for_each(std::begin(ar), std::end(ar), [](int i) {
std::cout << " " << i;
});
bool b = std::is_sorted(std::begin(ar), std::end(ar), [&](int l, int r) {
return l<r;
});
std::cout << " " << b << "\n";
Có các giải pháp tốt cho việc này?
Bạn nên sử dụng ['std :: iota'] (http://en.cppreference.com/w/cpp/algorithm/iota) thay vì lệnh 'generate_n' bằng biến' static'. – Praetorian
Sử dụng tính năng thụt lề gỗ. Tiếp tục thụt dòng trước đó, sử dụng các lệnh thủ công để lùi/thụt lề. Tại 1 khóa mỗi phần chi phí của một dòng, là nó thực sự giá trị duy trì và đối phó với quirks của một mã toàn bộ mã định dạng mã? Tôi có nghĩa là gọn gàng và tất cả, và đôi khi hữu ích cho bản sao/mì ống ... – Yakk
@Praetorian Nó được dự định như là một ví dụ nhanh chóng của một hàm lambda không có đối số. Hàm 'std :: iota' không sử dụng tham số hàm. – Hugues