CameraComponent relative rotation overwritten by CapsuleComponent parent

I’m running through the FPS tutorial 1 - Setting up your Project | Unreal Engine Documentation and wanted to create a toggle between first person and third person camera, with the third person camera angled to point at the character mesh. My C++ setup for this is as follows:

ARyddelmystCharacter::ARyddelmystCharacter()
{
	// Set size for collision capsule
	GetCapsuleComponent()->InitCapsuleSize(55.f, 96.0f);

	// set our turn rates for input
	BaseTurnRate = 45.f;
	BaseLookUpRate = 45.f;

	// Create a CameraComponent	for first person perspective
	FirstPersonCameraComponent = CreateDefaultSubobject<UCameraComponent>(TEXT("FirstPersonCamera"));
	FirstPersonCameraComponent->SetupAttachment(GetCapsuleComponent());
	FirstPersonCameraComponent->SetRelativeLocation(FVector(-39.56f, 1.75f, 50.f + BaseEyeHeight)); // Position the camera slightly above eye level and at about the front of the mesh's face
	FirstPersonCameraComponent->bUsePawnControlRotation = true;
	FirstPersonCameraComponent->SetActive(true);

	// Create a CameraComponent	for third person perspective
	ThirdPersonCameraComponent = CreateDefaultSubobject<UCameraComponent>(TEXT("ThirdPersonCamera"));
	ThirdPersonCameraComponent->SetupAttachment(GetCapsuleComponent());
	FVector thirdPersonOffset = FVector(-200.00f, 0.0f, 50.f + BaseEyeHeight);
	FRotator cameraOffsetCCWYaw = FRotator(0.0, -45.0, 0.0);
	thirdPersonOffset = cameraOffsetCCWYaw.RotateVector(thirdPersonOffset);
	ThirdPersonCameraComponent->SetRelativeLocation(thirdPersonOffset); // Position the camera well above eye level and behind the mesh's head in quadrant 4 of a plane perpendicular to the character's height axis (Z)
	FRotator cameraLocalRotation = FRotator(0.0, -45.0, 0.0);
	ThirdPersonCameraComponent->SetRelativeRotation(cameraLocalRotation); // point the camera at our mesh by matching its own relative rotation to the angle we used to rotate its offset vector
	ThirdPersonCameraComponent->bUsePawnControlRotation = true;
	ThirdPersonCameraComponent->SetActive(false);
}
... some setup code to map hitting the Tab key to running the CameraToggle function...
void ARyddelmystCharacter::CameraToggle()
{
	if (FirstPersonCameraMode)
	{
		UE_LOG(LogTemp, Warning, TEXT("CameraToggle; going to third person cam, whose rel rotation is %s and world rotation is %s.  Capsule rel rotation is %s and world rotation is %s."),
			*ThirdPersonCameraComponent->GetRelativeRotation().ToString(),
			*ThirdPersonCameraComponent->GetComponentRotation().ToString(),
			*GetCapsuleComponent()->GetRelativeRotation().ToString(),
			*GetCapsuleComponent()->GetComponentRotation().ToString());
		FirstPersonCameraComponent->SetActive(false);
		ThirdPersonCameraComponent->SetActive(true);
		FirstPersonCameraMode = false;
	} 
	else
	{
		UE_LOG(LogTemp, Warning, TEXT("CameraToggle; going to first person cam, whose rel rotation is %s and world rotation is %s.  Capsule rel rotation is %s and world rotation is %s."),
			*FirstPersonCameraComponent->GetRelativeRotation().ToString(),
			*FirstPersonCameraComponent->GetComponentRotation().ToString(),
			*GetCapsuleComponent()->GetRelativeRotation().ToString(),
			*GetCapsuleComponent()->GetComponentRotation().ToString());
		FirstPersonCameraComponent->SetActive(true);
		ThirdPersonCameraComponent->SetActive(false);
		FirstPersonCameraMode = true;
	}
}

This appears to work in the Editor’s preview window, but when I actually run the game I find that the third person camera’s relative rotation has been wiped out and matches that of the parent CapsuleComponent:

LogTemp: Warning: BeginPlay; first person cam rel rotation is P=0.000000 Y=0.000000 R=0.000000 and world rotation is P=0.000000 Y=0.000000 R=0.000000.  Third person cam rel rotation is P=0.000000 Y=-44.999996 R=0.000000 and world rotation is P=0.000000 Y=-44.999996 R=0.000000.  Capsule rel rotation is P=0.000000 Y=0.000000 R=0.000000 and world rotation is P=
0.000000 Y=0.000000 R=0.000000.

// first time switching to third person cam the rotation reads as correct in the logs, but the runtime view is facing the same direction as the CapsuleComponent.  Since the subsequent logs show zeroed rotation on the third person cam, I'm guessing whatever overwrite is happening occurs after the camera toggle logs are written
LogTemp: Warning: CameraToggle; going to third person cam, whose rel rotation is P=0.000000 Y=-44.999996 R=0.000000 and world rotation is P=0.000000 Y=-44.999996 R=0.000000.  Capsule rel rotation is P=0.000000 Y=0.000000 R=0.000000 and world rotation is P=0.000000 Y=0.000000 R=0.000000.

LogTemp: Warning: CameraToggle; going to first person cam, whose rel rotation is P=0.000000 Y=0.000000 R=0.000000 and world rotation is P=0.000000 Y=0.000000 R=0.000000.  Capsule rel rotation is P=0.000000 Y=0.000000 R=0.000000 and world rotation is P=0.000000 Y=0.000000 R=0.000000.

LogTemp: Warning: CameraToggle; going to third person cam, whose rel rotation is P=0.000000 Y=0.000000 R=0.000000 and world rotation is P=0.000000 Y=0.000000 R=0.000000.  Capsule rel rotation is P=0.000000 Y=0.000000 R=0.000000 and world rotation is P=0.000000 Y=0.000000 R=0.000000.

LogTemp: Warning: CameraToggle; going to third person cam, whose rel rotation is P=0.000000 Y=0.000000 R=0.000000 and world rotation is P=0.000000 Y=75.730797 R=0.000000.  Capsule rel rotation is P=0.000000 Y=75.730820 R=0.000000 and world rotation is P=0.000000 Y=75.730797 R=0.000000.

// looking around a bit
LogTemp: Warning: CameraToggle; going to first person cam, whose rel rotation is P=-5.570538 Y=0.000021 R=0.000000 and world rotation is P=-5.570531 Y=75.730820 R=0.000000.  Capsule rel rotation is P=0.000000 Y=75.730820 R=0.000000 and world rotation is P=0.000000 Y=75.730797 R=0.000000.

//  the third person camera Yaw rotation essentially copies that of the CapusleComponent instead of deriving from it
LogTemp: Warning: CameraToggle; going to third person cam, whose rel rotation is P=-5.570538 Y=0.000024 R=0.000000 and world rotation is P=-5.570531 Y=66.960381 R=0.000000.  Capsule rel rotation is P=0.000000 Y=66.960342 R=0.000000 and world rotation is P=0.000000 Y=66.960358 R=0.000000.

I want the third person camera to be attached to the CapsuleComponent, but I expected the relative rotation of the camera to be aggregated together with the transforms of its parent such that it could follow along in the world but still be facing towards the CapsuleComponent at a 45 degree angle, rather than having its rotation replaced by that of CapsuleComponent and wind up facing the same direction.

What’s going wrong here? Why is my CameraComponent’s relative rotation being overwritten by the CapsuleComponent rotation?

Note: I’m working through a Blueprint derived from the above ACharacter subclass, but the hierarchy and transforms of interest are defined in the ancestor C++. I tried unchecking the ‘Use Controller Rotation Yaw’ box in the character Blueprint, but that just let me move the camera independent of the capsule (which is not desirable); the initial rotation was still zeroed.

Turns out it was a sneaky checkbox in the Blueprint: Select Third Person Camera Component → look at details panel on the right for Camera Options → uncheck Use Pawn Control Rotation

After unchecking Use Pawn Control Rotation my programmatic rotation worked as expected.