<div dir="ltr"><div><div>Hi clang developers</div><div><br></div><div>clang 3.8 and 3.9 SVN fails to compile the C++ program below.</div><div><br></div><div>I already reported the bug via LLVM Bugzilla (<a href="https://llvm.org/bugs/show_bug.cgi?id=28425">https://llvm.org/bugs/show_bug.cgi?id=28425</a>) but got no response. </div><div><br></div><div><div><div>-------------------------------------</div><div>enum PermissionTypePk { PT_GLOBAL };</div><div>struct PermissionType</div><div>{</div><div>    static PermissionType getPermissionType() { return PermissionType(); }</div><div>    PermissionType() : m_pk(PT_GLOBAL) {}</div><div>    const PermissionTypePk m_pk; // --> removing "const" makes the program compile</div><div>};</div><div><br></div><div>int main()</div><div>{</div><div>    const PermissionTypePk permissionTypePk = true ? PermissionType::getPermissionType().m_pk : PT_GLOBAL;</div><div>    return 0;</div><div>}</div></div><div>-------------------------------------<br></div></div><div><br></div><div>[user@host test]$ clang++ -Wall -Wextra -c clang_error.cpp</div><div>clang_error.cpp:11:28: error: cannot initialize a variable of type 'const PermissionTypePk' with an rvalue of type 'int'</div><div>    const PermissionTypePk permissionTypePk = true ? PermissionType::getPermissionType().m_pk : PT_GLOBAL;</div><div>                           ^                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</div><div>1 error generated.</div><div><br></div><div>Removing "const" from member "m_pk" makes the program compile.</div><div><br></div><div>gcc 6 compiles both versions, with and without "const".</div><div><br></div><div><br></div></div><div>Regards, Peter.</div></div>