我踩过的 C Plus Plus 的坑

拷贝还是复制

1
2
3
for (auto occupant_in_yield_zone_state : occupant_in_yield_zone_states_) {}

for (auto& occupant_in_yield_zone_state : occupant_in_yield_zone_states_) {}

运算符的区别

1
2
3
4
5
6
7
8
// 加号优先级高,三元运算符 从右向左 解析
single_sum = (l1!=nullptr?l1->val:0) + (l2!=nullptr?l2->val:0) + next_tmp;

single_sum = l1!=nullptr?l1->val:0 + l2!=nullptr?l2->val:0 + next_tmp;

等同于

single_sum = l1!=nullptr?l1->val:[(0 + l2)!=nullptr?l2->val:(0 + next_tmp)];

表达式 a > b ? b > c ? 1 : 0 : 2 将被解析为 a > b ? (b> c ? 1 : 0) : 2。

boost::geometry::covered_by

int64_t vs int