Perhaps your real code is more like this?
class Any
{
public:
Any(){}
Any(const Any &other)
{
}
template<typename T>
Any(T &&other)
{
}
};
In this case, the template is better suited for Any& other(not const!). Then the solution should provide constructor overload without a constructor without a template:
class Any
{
public:
Any(){}
Any(const Any &other)
{
}
Any(Any &other)
{
}
template<typename T>
Any(T &&other)
{
}
};