diff --git a/include/inja/renderer.hpp b/include/inja/renderer.hpp index fcb2bcd..d62bdb6 100644 --- a/include/inja/renderer.hpp +++ b/include/inja/renderer.hpp @@ -500,16 +500,17 @@ class Renderer : public NodeVisitor { (*current_loop_data)["parent"] = std::move(tmp); } + size_t index = 0; for (auto it = result->begin(); it != result->end(); ++it) { json_loop_data[static_cast(node.value)] = *it; - size_t index = std::distance(result->begin(), it); (*current_loop_data)["index"] = index; (*current_loop_data)["index1"] = index + 1; (*current_loop_data)["is_first"] = (index == 0); (*current_loop_data)["is_last"] = (index == result->size() - 1); node.body.accept(*this); + ++index; } json_loop_data[static_cast(node.value)].clear(); @@ -531,17 +532,18 @@ class Renderer : public NodeVisitor { (*current_loop_data)["parent"] = std::move(*current_loop_data); } + size_t index = 0; for (auto it = result->begin(); it != result->end(); ++it) { json_loop_data[static_cast(node.key)] = it.key(); json_loop_data[static_cast(node.value)] = it.value(); - size_t index = std::distance(result->begin(), it); (*current_loop_data)["index"] = index; (*current_loop_data)["index1"] = index + 1; (*current_loop_data)["is_first"] = (index == 0); (*current_loop_data)["is_last"] = (index == result->size() - 1); node.body.accept(*this); + ++index; } json_loop_data[static_cast(node.key)].clear(); diff --git a/single_include/inja/inja.hpp b/single_include/inja/inja.hpp index b9ccd7c..281ae54 100644 --- a/single_include/inja/inja.hpp +++ b/single_include/inja/inja.hpp @@ -3759,16 +3759,17 @@ class Renderer : public NodeVisitor { (*current_loop_data)["parent"] = std::move(tmp); } + size_t index = 0; for (auto it = result->begin(); it != result->end(); ++it) { json_loop_data[static_cast(node.value)] = *it; - size_t index = std::distance(result->begin(), it); (*current_loop_data)["index"] = index; (*current_loop_data)["index1"] = index + 1; (*current_loop_data)["is_first"] = (index == 0); (*current_loop_data)["is_last"] = (index == result->size() - 1); node.body.accept(*this); + ++index; } json_loop_data[static_cast(node.value)].clear(); @@ -3790,17 +3791,18 @@ class Renderer : public NodeVisitor { (*current_loop_data)["parent"] = std::move(*current_loop_data); } + size_t index = 0; for (auto it = result->begin(); it != result->end(); ++it) { json_loop_data[static_cast(node.key)] = it.key(); json_loop_data[static_cast(node.value)] = it.value(); - size_t index = std::distance(result->begin(), it); (*current_loop_data)["index"] = index; (*current_loop_data)["index1"] = index + 1; (*current_loop_data)["is_first"] = (index == 0); (*current_loop_data)["is_last"] = (index == result->size() - 1); node.body.accept(*this); + ++index; } json_loop_data[static_cast(node.key)].clear();