Boost logo

Boost :

Subject: [boost] [parameter] aux_/void.hpp: potential undefined behavior
From: Krzysztof Czainski (1czajnik_at_[hidden])
Date: 2011-11-03 09:57:28


Here's boost/aux_/void.hpp contents, without include quards and license
note, where I marked a line with a comment to refer to it below.
namespace boost { namespace parameter {

// A placemarker for "no argument passed."
// MAINTAINER NOTE: Do not make this into a metafunction
struct void_ {};

namespace aux

  inline void_& void_reference()
      static void_ instance; // (1)
      return instance;

} // namespace aux

}} // namespace boost::parameter

My question is: is it allowed to use an instance of an uninitialized empty

The struct void_ is empty. On line (1) a static uninitialized instance of
struct void_ is defined, and it is then returned. Does the standard allow
this? I can't imagine any real problems with this, but I'm curious if this
has defined behavior according to the standard.

A natural and simple solution to my concern is of course to change the line
(1) to:
static void_ instance = {};

I'd be happy to create a ticket with a patch, if my concern is valid.


Boost list run by bdawes at, gregod at, cpdaniel at, john at