Gaby says:
> I believe we do care for good diagnostic purposes.

Yes. Diagnostics are very important. Please let's not regress on this
point. In a perfect world we'd get the diagnostic advantages of
concepts with the ability to configure typedefs. 

Mike says:
> As for warning/error messages, I'd hate to regress on that front. Doug,
> as a heavy template user, I'm sure you've see plenty of warning/ error
> messages... How important is the typedef name in your experience?

Very important. 

In particular, for very heavily templatized code, typedefs are
essential. We need more aggressive substitutions, not less. It's hard
to decipher multi-paragraph type names without some kind of aliasing to
shorter types. For good examples of this look at compile errors in
pb_ds, the policy-based containers in libstdc+ +-v3/include/ext. I can
come up with nightmare scenarios and suggestions if people are
interested in specifics. However, any metaprogramming will also show
these issues.

My suggestion, which I've not seen here before, is to allow end-users
to configure this. I see the need for both kinds of behavior: people
who want to see the "real type" of the thing that they are using, and
people who need "shorthands" to deal with complex types and the
compilation errors that result (and will result, even with concepts.)

Maybe:
-Wtypedef-as-underlying-type

This will also give programmers a way to make tradeoffs that impact
compile-time performance. There's no need to hard wire this.

-benjamin

Reply via email to