Kenji Hara <> changed:

           What    |Removed                     |Added
           Severity|normal                      |enhancement

--- Comment #1 from Kenji Hara <> 2012-02-17 07:26:36 PST ---
I think this is an enhancement.

Current attribute inference only works against template function and function
literal, not against normal function.
And non-template function insinde templated aggregate is normal function, so
the inference does not run for them.

But this is a big issue. Almost ranges in std.range should *inherit* original
range's pureness, safety, and nothrow-ness.
To implement it, with current compiler, the only way is to change *all of
member functions* in range structs to be tamplated like follows:

struct Retro(R) {
  R original;

  //auto empty(){ return original.empty; }
  auto empty()(){ return original.empty; }

  //auto front(){ return original.front; }
  auto front()(){ return original.front; }

...but it may introduce mess and dangerous forward reference, IMHO.

Configure issuemail:
------- You are receiving this mail because: -------

Reply via email to