G++ 5.3 Bug
I was just thinking to myself recently that I haven’t found a compiler bug in a while. It’s because I’m doing so much in Python, and I’ve never found a bug in Python (the language).
But I’ve never worked with a C++ compiler where I didn’t find a bug.
And sure enough, just came across one, in GCC 5.3 (Qt 5.8).
auto Zip5 = hasFIPS? [&file](size_t row) { return file.Field(row, 6); } : [&file](size_t row) { return file.Field(row, 5); };
That fails with:
error: operands to ?: have different types ‘ZipCatalog::Load(const boost::filesystem::path&, const boost::filesystem::path&, const boost::filesystem::path&)::<lambda(size_t)>’ and ‘ZipCatalog::Load(const boost::filesystem::path&, const boost::filesystem::path&, const boost::filesystem::path&)::<lambda(size_t)>’
Compiler bug. Those two types are the same.
(I’ve never found a bug in a C compiler either, though it’s been decades since I wrote any C code.)