c++ - Why base class is not automatically deduced in the same "auto" declaration? -


below error related auto, understandable:

auto = int(), d = double(); // error: inconsistent deduction ‘auto’ 

however, why following victimized same error:

struct b {}; struct d : b {};  const auto &b1 = b(), &b2 = d(); // error: inconsistent deduction ‘auto’ 

having known that, b1 deduced const b&, can't compiler try making b2 const b& ? (i.e. kind of hazard can cause if b2 have been deduced const b& ?)

the danger unexpected results... when create d, expect d result. there fact there cast involved... "safe" cast, cast none-the-less. identical argument made first example... why doesn't compiler make d , int, since double can converted trivially , has decided type based on result i. or of case have 2 sibling classes... should both resolve common base?

if want code compile, can explicitly cast result of d() both expressions yield same type.

and language lawyer bit:

[decl.spec.auto]/7:

if list of declarators contains more 1 declarator, type of each declared variable determined described above. if type deduced template parameter u not same in each deduction, program ill-formed.


Comments

Popular posts from this blog

c# - SharpSVN - How to get the previous revision? -

c++ - Is it possible to compile a VST on linux? -

url - Querystring manipulation of email Address in PHP -