
On Tue, Mar 06, 2012 at 09:38:45PM -0800, Eric Niebler wrote:
On 3/6/2012 9:28 PM, Daniel Walker wrote:
Oh yeah, I forgot this only comes up with call expressions. How about BOOST_NO_INCOMPLETE_DECLTYPE_CALL_EXPRESSIONS? The macro means the compiler does not support incomplete decltypes of call expressions.
That's better, I suppose. It's not 100% accurate to say that the compiler doesn't support incomplete call expressions, though. If a compiler doesn't implement N3276, it still supports incomplete call expressions and usually gets the right answer, but it could potentially instantiate a template unnecessarily in the process. (And this could set off an infinite cascade of such template instantiations, which causes your computer to catch fire and burn off your eyebrows.)
So I dunno. I still lean toward BOOST_NO_DECLTYPE_N3276 because nothing pithy seems to really get at the gist of it. And I don't expect this macro to be used outside of Boost itself. But I don't have a strong feeling about it.
How about some documentation or at least a comment somewhere in Boost.Config about what it implies, even if it's just a link to the paper? I'd reckon that anyone that encounters it in source will want to try to find out what it means, in some indirect way. There's nothing worse than when good information only exists deep in some thread on a mailing list. -- Lars Viklund | zao@acc.umu.se