On 17/01/2014 21:36, Richard Smith wrote:
On Fri, Jan 17, 2014 at 6:52 AM, Alp Toker <[email protected]
<mailto:[email protected]>> wrote:
Ping
Need this to parse MSVC headers, patch rebased to ToT.
Really sorry for the delay!
For the 'nothrow' tests, please use Sema::canThrow rather than
checking the exception specification (that way, you'll also handle
exceptions within default arguments, exceptions within the conversion
sequences for the parameters, and so on).
On balance there's no need for bug-for-bug compatibility here so yes,
let's do the right thing. The patch was developed from a description of
MSVC behaviour but I've reached the conclusion they've simply made a
pig's ear of it.
As a note, the MS built-in __has_*constructor() primitives only seem to
check the first ctor in cases where there are multiple constructors
defined -- another behaviour we certainly don't want.
Thanks for pointing this out!
Please also *don't* return true if the construction is trivial but not
noexcept -- that doesn't match what the standard requires from these
traits.
If you're intending on providing follow-up patches implementing the
other stubbed-out traits, I'm OK with them being broken in the interim
(it's a good start); otherwise I'd like for them to be diagnosed
rather than silently giving the wrong answers.
It's worth getting these into SVN to stem bug reports -- failure to
parse is the most reported issue. So I'll land with the
__is_*constructive() checks as KEYALL now that it looks like the
semantics will be generally useful, and keep the unimplemented cases as
KEYMS with a view to completing their implementations shortly.
Richard, if you have a minute could you review my proposal "Type trait
primitives and feature detection" taking into account r199562 -- that's
the roadmap I've set out for getting trait feature detection and
documentation back in order and I'd appreciate your second opinion.
Alp.
On 12/12/2013 17:13, Alp Toker wrote:
This patch adds support for the MSVC12.0 / 2013 type trait
builtin primitives sufficiently to support the new type_trait
facilities added to the C++ standard library.
With these clang is now more or less able to parse itself with
the Visual Studio 2013 SDK.
Fully Implemented:
* __is_constructible()
* __is_nothrow_constructible()
Implemented through fallback to other type traits (WIP, noted
with two TODOs):
* __is_destructible()
* __is_nothrow_destructible()
* __is_nothrow_assignable()
The patch is built on top of the other two posted earlier
today unifying (1) contextual keywords and (2) the new type
traits implementation.
Alp.
--
http://www.nuanti.com
the browser experts
_______________________________________________
cfe-commits mailing list
[email protected] <mailto:[email protected]>
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
--
http://www.nuanti.com
the browser experts
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits