UHT failing to parse struct constructors

The following code works on 4.14 but does not work on 4,15

USTRUCT(BlueprintType)
struct FAry
{
	GENERATED_USTRUCT_BODY()
		UPROPERTY()
		TArray<int32> cells;  
	FAry(){}
	friend FArchive& operator<<(FArchive& Ar, FAry& V)
	{
		return Ar << V.cells;
	}
};
USTRUCT(BlueprintType)
struct F3DARY
{
	GENERATED_USTRUCT_BODY()
	UPROPERTY()
		TArray<FAry> row;
	UPROPERTY()
		TArray<int32> faces;
	UPROPERTY()
		int32 numVerts;
	F3DARY()
	{
		numVerts = 0;
	}
	friend FArchive& operator<<(FArchive& Ar, F3DARY& V)
	{
		return Ar << V.row << V.faces << V.numVerts;
	}
};
USTRUCT(BlueprintType)
struct F4DARY
{
	GENERATED_USTRUCT_BODY()
	UPROPERTY()
		TArray<F3DARY> ROW;	//UP TO DOWN
	F4DARY()	{}
	friend FArchive& operator<<(FArchive& Ar, F4DARY& V)
	{
		return Ar << V.ROW;
	}
};

In 4.15 the top struct works fine, but the second two structs fail. This thread on the forums is where someone helped me, thanks again to them for pointing out what was going on.

The thread

Hi ,

I apologize for the delay in responding to your post. Thank you for letting us know about this issue. Your suggestion about what was happening was close, but what is really happening here is most likely fallout from a change in 4.15 related to how struct names are parsed.

In this case, the problem is not really how your constructor is initializing properties, but instead that the name of the struct uses all capital letters. I discovered this quite by accident when I mistakenly named a struct in one of my test projects F3DAry instead of F3DARY, and the project built without any problems. I then tried including all three of your structs exactly as you provided them, but with the last two letters of the second and third structs lowercase, and the project built fine. It turns out that if any single letter in the struct’s name is not capitalized, the build will complete successfully. I have entered UE-44950 to have this investigated further.