, Такая последовательность преобразования не может быть выведена компилятором, поскольку она может / может использовать не более одного пользовательского преобразования в последовательности преобразования.

конструктор копирования сделанprivate затем в

Дело 1: Нет ошибок, компилятору все равно, был ли задан конструктор копирования в классе.

Случай 2: Ошибка, конструктор копирования является частным и когда это сделаноpublicЭто исключено.

Оптимизирует ли это непосредственно копию, не замечая этого, если конструктор был сделанprivate?

#include <string>
using std::string;

class T
{
    string s;
    T(const T &obj):s(obj.s){}
public:
    T(const string &str):s(str){}
};

int main()
{
    T a = ("Copy Initialization");     //Case: 1

    T b = T("Copy Initialization");    //Case: 2
}

Ответы на вопрос(2)

Ваш ответ на вопрос