title: Narrowing conversion to bool warning in MSVC
body: <p>When compiling this code:</p>
  
  <pre><code>enum B: bool { T = true };
  struct A { bool member; };
  
  void foo(const B b = T)
  {
      A a{b}; // warning here
  }
  
  void bar()
  {
      const B b = T;
      A a{b};
  }
  </code></pre>
  
  <p>MSVC issues a warning in <code>foo</code>: </p>
  
  <blockquote>
    <p>warning C4838: conversion from 'const B' to 'bool' requires a narrowing conversion</p>
  </blockquote>
  
  <p>but compiles <code>bar</code> fine.</p>
  
  <p>Here is a <a href="https://godbolt.org/z/Zkmrvu" rel="nofollow noreferrer">proof</a></p>
  
  <p>Is it a compiler bug or intended behavior?</p>