I am not sure why, but when I do vec.push_back(tc2); I get three different instances of candidate constructor not viable:.
However, the code runs fine without the line vec.push_back(tc2). Why is that?
#include <vector> 
class TestClass
{
private:
    std::string url_;
    std::string name_;
    long long size_;
public:
    TestClass(std::string url, std::string name, long long size)
        : url_{url}, name_{name}, size_{size} {}
    TestClass() : TestClass{"", "", -1} {}
    TestClass(TestClass &source)
        : url_(source.getUrl()),
          name_(source.getName()),
          size_(source.getSize()) {}
    std::string getUrl() const;
    std::string getName() const;
    long long getSize() const;
};
std::string TestClass::getUrl() const{
    return url_; 
}
std::string TestClass::getName() const{
    return name_; 
}
long long TestClass::getSize() const {
    return size_; 
}
int main()
{
    TestClass tc{};
    TestClass tc2{"a", "b", 222};
    std::vector<TestClass> vec; 
    vec.push_back(tc2);
    return 0;
}```
