Looks like CL-3215392 added changes in FArchive where the operator<< method for bool is a member operator in Editor (as opposed to a global operator in non-editor and old builds).
This causes shadowing issues so subclasses that implement additional operator<< methods, or override existing ones will break compilation.
Some classes (like FMemoryArchive) get around this with `using FArchive::<<`.
Should probably investigate to see all the classes this could affect.
static void Test() { TArray<uint8> ObjectBytes; FMemoryWriter MemoryWriter(ObjectBytes, true); FObjectAndNameAsStringProxyArchive test(MemoryWriter, false); bool testBool = false; test << testBool; }
Expected: The compile succeeds.
Actual: The compile fails with: `error C2679: binary '<<': no operator found which takes a right-hand operand of type 'bool' (or there is no acceptable conversion)`
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-42052 in the post.
| 2 |
| Component | UE - Foundation - Core |
|---|---|
| Affects Versions | 4.15 |
| Target Fix | 4.16 |
| Fix Commit | 3309231 |
|---|---|
| Main Commit | 3315211 |
| Created | Feb 16, 2017 |
|---|---|
| Resolved | Feb 17, 2017 |
| Updated | Apr 27, 2018 |