From 012baa7d620eb7e04a575a8d900adf1d3a8f5c11 Mon Sep 17 00:00:00 2001 From: Matt Blair Date: Thu, 7 May 2015 13:11:47 -0400 Subject: [PATCH] Fix operator-> for iterators The proxy reference pattern used in Boost iterators to provide pointers to temporary values requires that -> actually returns a 'proxy' object that further has -> applied in the calling scope --- include/yaml-cpp/node/detail/iterator.h | 2 +- include/yaml-cpp/node/detail/node_iterator.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/yaml-cpp/node/detail/iterator.h b/include/yaml-cpp/node/detail/iterator.h index 9338d53..ac762ad 100644 --- a/include/yaml-cpp/node/detail/iterator.h +++ b/include/yaml-cpp/node/detail/iterator.h @@ -70,7 +70,7 @@ class iterator_base return value_type(); } - value_type* operator->() const { + proxy operator->() const { return proxy(**this); } diff --git a/include/yaml-cpp/node/detail/node_iterator.h b/include/yaml-cpp/node/detail/node_iterator.h index 4622fd0..fffe3d7 100644 --- a/include/yaml-cpp/node/detail/node_iterator.h +++ b/include/yaml-cpp/node/detail/node_iterator.h @@ -147,7 +147,7 @@ class node_iterator_base return value_type(); } - value_type* operator->() const { + proxy operator->() const { return proxy(**this); }