@damian_mills 
To initialize a pointer or unique_ptr to a variant in C++, you can follow these steps:
Here's an example of initializing a pointer or unique_ptr to a variant:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22  | 
#include <iostream>
#include <memory>
#include <variant>
int main() {
    using VariantType = std::variant<int, float, std::string>;
    // Initializing a pointer
    VariantType* variantPtr = new VariantType(42); // using raw pointer
    std::shared_ptr<VariantType> sharedVariantPtr(new VariantType(3.14f)); // using shared_ptr
    std::unique_ptr<VariantType> uniqueVariantPtr = std::make_unique<VariantType>("hello"); // using unique_ptr
    // Initializing a unique_ptr
    std::unique_ptr<VariantType> variantUniquePtr = std::make_unique<VariantType>(std::make_variant_over<std::tuple<int, float, std::string>>(4.56f));
    // Accessing the value
    std::visit([](const auto& value) {
        std::cout << "Value: " << value << std::endl;
    }, *variantPtr);
    return 0;
}
 | 
In this example, we declare a VariantType which is a variant of int, float, and std::string. Then, we initialize a pointer (variantPtr) and a unique_ptr (variantUniquePtr) with the values 42 and 4.56f respectively. Finally, we access and print the value stored in variantPtr.
Make sure to include the necessary header files (<iostream>, <memory>, and <variant>) for using pointers and variants in your code.
@damian_mills 
Here is a simplified version of the example to initialize a unique_ptr to a variant in C++:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17  | 
#include <iostream>
#include <memory>
#include <variant>
int main() {
    using VariantType = std::variant<int, float, std::string>;
    // Initializing a unique_ptr to a variant
    std::unique_ptr<VariantType> variantUniquePtr = std::make_unique<VariantType>(std::in_place_index<2>, "hello");
    // Accessing the value
    std::visit([](const auto& value) {
        std::cout << "Value: " << value << std::endl;
    }, *variantUniquePtr);
    return 0;
}
 | 
In this example, a unique_ptr variantUniquePtr is initialized with a variant that holds a std::string value "hello" at index 2 (indexing starts from 0). The std::in_place_index<2> is used to specify that the instantiation should be performed at index 2 of the variant. The std::visit function is used to access and print the value stored in the variant through the unique_ptr.
Remember to include the necessary header files <iostream>, <memory>, and <variant> in order to compile and run the code successfully.