On Wed, Jan 11, 2017 at 8:30 AM, Jonathan Wakely <jwak...@redhat.com> wrote:
>>> Re the new DMI, my brain compiler says that _Sequence c = _Sequence(); >>> breaks anything with an explicit copy/move constructor pre-C++17, but >>> I also don't think we care about those, right? >> >> >> I dislike them, > > > I meant to add "but we try to support them where plausible". > > If the standard requires CopyConstructible then we don't need to care > about explicit copy constructors. But if it only requires > is_copy_constructible then that does work with explicit copy ctors. > And if it says one thing, but means the other, then we just have to > guess what's intended! :-) > > Clause 23 is ... not a model of clarity. It depends on how strongly you read the "any sequence container" phrasing, I suppose. Table 83 requires X u = a; to work for containers, but it also requires a == b to work. There's also the problem of Compare (which I don't see any requirement w/r/t CopyConstructible and like on). It does say things like "initializes comp with x", but doesn't say what kind of initialization...