|
Boost Users : |
Subject: Re: [Boost-users] boost/parameter/keyword.hpp warning, TI compiler
From: Václav Haisman (v.haisman_at_[hidden])
Date: 2010-12-03 04:47:09
On Thu, 2 Dec 2010 20:25:26 +0100, Krzysztof Czainski wrote:
> 2010/12/2 Krzysztof Czainski
> Hello,
>
> When I compile a file, that consists of only one line:
>
> #include
>
> with a Texas Intstruments compiler for DSP (cgtools-6.1.12);
> boost-1.45.0, I get this warning:
>
> boost/parameter/aux_/void.hpp, line 20: warning #1369-D: static local
> variables of extern inline function are not resolved to single copy.
> Not ANSI C++ Compliant
>
> It referes to:
> Â inline void_& void_reference()
> Â {
> Â Â Â Â Â static void_ instance;
> Â Â Â Â Â return instance;
> Â }
>
> In this particular context this warning seams harmless, so I would
> like to suppress it. As far as I know, this compiler doesn't have a
> #pragma warning(disable:1369) equivalent...
>
> I know how suppress this kind of warning globally, but I would not
> like that, because in other contexts this is an important warning.
>
> Any ideas, how I could suppress this warning locally, in code
> perhaps?
>
> Cheers
> Kris
>
> A fix I came up with is modifying void.hpp like this:
>
> #ifdef __TI_COMPILER_VERSION__
> Â namespace { void_ void_instance = {}; }
> #endif // __TI_COMPILER_VERSION__
Does this not violate the ODR? The anonymous namespace is different for
each TU => void_reference() will be different in each TU.
>
> Â inline void_& void_reference()
> Â {
> #ifdef __TI_COMPILER_VERSION__
> Â Â Â Â Â return void_instance;
> #else // __TI_COMPILER_VERSION__
> Â Â Â Â Â static void_ instance;
> Â Â Â Â Â return instance;
> #endif // __TI_COMPILER_VERSION__
> Â }
>
> Does anyone see any downsides?
See above.
-- VH
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net