variadic template constructor matches better than copy constructor

#include <iostream>
#include <string>

template <typename T>
struct MyClass {
    T value;

    template <typename... Args>
    MyClass(Args&&... args) : value(std::forward<Args>(args)...) {
        std::cout << "Variadic template constructor" << std::endl;
    }

    MyClass(const MyClass& other) : value(other.value) {
        std::cout << "Copy constructor" << std::endl;
    }
};

int main() {
    MyClass<int> obj1(42);  // Variadic template constructor
    MyClass<int> obj2 = obj1;  // Variadic template constructor
    return 0;
}