> On Jul 31, 2017, at 3:58 AM, Félix Cloutier <felix...@yahoo.ca> wrote: > It seems to me that this applies just the same to type generic parameters. > Are there any reason that you can't instantiate a generic type at runtime, or > is it just because the need is not as evident as it would/could be with > non-type generic parameters?
Are you under the impression that Swift does not, today, instantiate generic types at runtime? A lot of this entire thread seems to be premised on really weird, incorrect assumptions about the Swift compilation model. John. > >> Le 30 juil. 2017 à 21:10, John McCall via swift-evolution >> <swift-evolution@swift.org> a écrit : >> >>> On Jul 30, 2017, at 11:43 PM, Daryle Walker <dary...@mac.com> wrote: >>> The parameters for a fixed-size array type determine the type's >>> size/stride, so how could the bounds not be needed during compile-time? The >>> compiler can't layout objects otherwise. >> >> Swift is not C; it is perfectly capable of laying out objects at run time. >> It already has to do that for generic types and types with resilient >> members. That does, of course, have performance consequences, and those >> performance consequences might be unacceptable to you; but the fact that we >> can handle it means that we don't ultimately require a semantic concept of a >> constant expression, except inasmuch as we want to allow users to explicitly >> request guarantees about static layout. >> >> Value equality would still affect the type-checker, but I think we could >> pretty easily just say that all bound expressions are assumed to potentially >> resolve unequally unless they are literals or references to the same 'let' >> constant. >> >> The only hard constraint is that types need to be consistent, but that just >> means that we need to have a model in which bound expressions are evaluated >> exactly once at runtime (and of course typically folded at compile time). >> >> John. >> >>> Or do you mean that the bounds are integer literals? (That's what I have in >>> the design document now.) >>> >>> Sent from my iPhone >>> >>> On Jul 30, 2017, at 8:51 PM, John McCall <rjmcc...@apple.com> wrote: >>> >>>>> On Jul 29, 2017, at 7:01 PM, Daryle Walker via swift-evolution >>>>> <swift-evolution@swift.org> wrote: >>>>> The “constexpr” facility from C++ allows users to define constants and >>>>> functions that are determined and usable at compile-time, for >>>>> compile-time constructs but still usable at run-time. The facility is a >>>>> key step for value-based generic parameters (and fixed-size arrays if you >>>>> don’t want to be stuck with integer literals for bounds). Can figuring >>>>> out Swift’s story here be part of Swift 5? >>>> >>>> Note that there's no particular reason that value-based generic >>>> parameters, including fixed-size arrays, actually need to be constant >>>> expressions in Swift. >>>> >>>> John. >> >> _______________________________________________ >> swift-evolution mailing list >> swift-evolution@swift.org >> https://lists.swift.org/mailman/listinfo/swift-evolution > _______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution