
Mathias Gaunard wrote:
On 08/08/2012 23:39, Dave Steffen wrote:
Hi Folks
During a recent bug hunt, we came across the following (Boost 1.49, fusion/adapted/std_tuple/tag_of.hpp):
#include <tuple>
namespace std { template <typename... Elements> class tuple; }
We find this rather puzzling -- why is this here? As far as we can tell, this doesn't do anything.
It forward declares std::tuple so that it can specialize its traits for it.
But it really shouldn't do that, since there is no guarantee this declaration is compatible with the standard one.
Well, first of all, it's not a forward declaration, right? std::tuple is declared in whatever gets included with #include<tuple>, right? So it's not a forward declaration, it's a... what? A backwards declaration? :-) It's redundant at any rate. (Or I'm completely wrong, in which case I'm missing something.) And then, yes, this may or may not be compatible with the real std::tuple (which is what we were looking in to when we found this). -- Dave Steffen Software Engineer NUMERICA CORPORATION www.numerica.us (970) 461-2000 main (970) 612-2327 direct