On 13 July 2017 at 18:58, Jeffrey Walton wrote: > I'm working on Fedora 26 with GCC 7.1.1. I'm testing some C++17 code > and learning where some of the pain points are. > > $ cat test.cxx > #include <cstddef> > int main(int argc, char* argv[]) > { > std::byte b1 {0x65}; > std::byte b2 = {0x66}; > return 0; > } > > test.cxx: In function ‘int main(int, char**)’: > test.cxx:5:23: error: cannot convert ‘int’ to ‘std::byte’ in initialization > std::byte b2 = {0x66}; > ^ > > It seems like there should be enough information for the compiler to > determine the list argument type and avoid the error (for b2) like in > the first example (for b1). > > Is the copy-list-initialization failure expected? Yes. You can't initialize a scoped enumeration type with an implicit conversion. enum class E { }; E e = { 0 }; // error E e{ 0 }; // ok in C++17, error in C++14