Skip to content

Commit 49b0823

Browse files
author
Cameron Custer
committed
revert deducing this in member-function lambdas (gcc 14/15 bug PR118291)
1 parent e2e3d3a commit 49b0823

3 files changed

Lines changed: 18 additions & 18 deletions

File tree

tests/library_checker_aizu_tests/handmade_tests/functional_graph.test.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,33 +63,33 @@ struct functional_graph_processor {
6363
}
6464
cycle.push_back(c);
6565
}
66-
auto dfs = [&](this auto &&self, int u2) -> void {
66+
auto dfs = [&](auto self, int u2) -> void {
6767
if (was2[u2] == attempt) return;
6868
was2[u2] = attempt;
6969
int v2 = nxt[u2];
70-
self(v2);
70+
self(self, v2);
7171
root_of[u2] = root_of[v2];
7272
depth[u2] = depth[v2] + 1;
7373
abr[v2].push_back(u2);
7474
};
75-
dfs(u);
75+
dfs(dfs, u);
7676
}
7777
for (auto u = 0; u < n; ++u)
7878
if (~cycle_pos[u]) cycle_prev[nxt[u]] = u;
7979
for (const auto &c : cycle) {
80-
auto dfs = [&](this auto &&self, int u) -> void {
80+
auto dfs = [&](auto self, int u) -> void {
8181
size[u] = 1;
8282
pos[u] = sz(order);
8383
order.push_back(u);
8484
for (auto v : abr[u]) {
85-
self(v);
85+
self(self, v);
8686
size[u] += size[v];
8787
}
8888
end[u] = sz(order);
8989
};
9090
int csize = 0;
9191
for (auto u : c) {
92-
dfs(u);
92+
dfs(dfs, u);
9393
csize += size[u];
9494
}
9595
for (auto u : c)

tests/library_checker_aizu_tests/trees/edge_cd_contour_range_query.test.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ struct sum_adj {
1414
//! stack for dfs is O(n)
1515
sum_adj(const vector<vi>& adj, const vector<ll>& sum):
1616
n(sz(sum)), sum(sum), sum_ch(n), p(n, -1) {
17-
auto dfs = [&](this auto&& self, int u) -> void {
17+
auto dfs = [&](auto&& self, int u) -> void {
1818
for (int c : adj[u])
1919
if (c != p[u])
20-
p[c] = u, sum_ch[u] += sum[c], self(c);
20+
p[c] = u, sum_ch[u] += sum[c], self(self, c);
2121
};
22-
dfs(0);
22+
dfs(dfs, 0);
2323
}
2424
//! @param u node
2525
//! @param delta number to add
@@ -50,17 +50,17 @@ struct contour_range_query {
5050
n(sz(a)), sum_a(adj, a), info(n) {
5151
edge_cd(adj, [&](int cent, int split) {
5252
vector<vector<ll>> sum_num(2, vector<ll>(1));
53-
auto dfs = [&](this auto&& self, int u, int p, int d,
53+
auto dfs = [&](auto&& self, int u, int p, int d,
5454
int side) -> void {
5555
info[u].push_back({int(sz(bits)), d, side});
5656
if (sz(sum_num[side]) == d)
5757
sum_num[side].push_back(0);
5858
sum_num[side][d] += a[u];
5959
for (int c : adj[u])
60-
if (c != p) self(c, u, 1 + d, side);
60+
if (c != p) self(self, c, u, 1 + d, side);
6161
};
6262
rep(i, 0, sz(adj[cent]))
63-
dfs(adj[cent][i], cent, 1, i < split);
63+
dfs(dfs, adj[cent][i], cent, 1, i < split);
6464
bits.push_back({BIT(sum_num[0]), BIT(sum_num[1])});
6565
});
6666
}

tests/library_checker_aizu_tests/trees/edge_cd_contour_range_update.test.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ struct sum_adj {
1414
//! stack for dfs is O(n)
1515
sum_adj(const vector<vi>& adj, const vector<ll>& sum):
1616
n(sz(sum)), sum(sum), sum_ch(n), p(n, -1) {
17-
auto dfs = [&](this auto&& self, int u) -> void {
17+
auto dfs = [&](auto&& self, int u) -> void {
1818
for (int c : adj[u])
1919
if (c != p[u])
20-
p[c] = u, sum_ch[u] += sum[c], self(c);
20+
p[c] = u, sum_ch[u] += sum[c], self(self, c);
2121
};
22-
dfs(0);
22+
dfs(dfs, 0);
2323
}
2424
//! @param u node
2525
//! @param delta number to add
@@ -53,15 +53,15 @@ struct contour_range_update {
5353
n(sz(a)), a(a), sum_a(adj, vector<ll>(n)), info(n) {
5454
edge_cd(adj, [&](int cent, int split) {
5555
array<int, 2> mx_d = {0, 0};
56-
auto dfs = [&](this auto&& self, int u, int p, int d,
56+
auto dfs = [&](auto&& self, int u, int p, int d,
5757
int side) -> void {
5858
mx_d[side] = max(mx_d[side], d);
5959
info[u].push_back({int(sz(bits)), d, side});
6060
for (int v : adj[u])
61-
if (v != p) self(v, u, 1 + d, side);
61+
if (v != p) self(self, v, u, 1 + d, side);
6262
};
6363
rep(i, 0, sz(adj[cent]))
64-
dfs(adj[cent][i], cent, 1, i < split);
64+
dfs(dfs, adj[cent][i], cent, 1, i < split);
6565
bits.push_back(
6666
{bit_rupq(mx_d[0] + 1), bit_rupq(mx_d[1] + 1)});
6767
});

0 commit comments

Comments
 (0)