O construtor de cópia não é chamado para inicialização de cópia ou otimizado?

Se o construtor de cópias for feitoprivate então em

Caso 1: Sem erro, o compilador não se importa se o construtor de cópia foi definido na classe.

Caso 2: Erro, o construtor de cópias é privado e quando é feitopublic, é elidido.

Otimiza diretamente a cópia sem perceber que, se o construtor foi feitoprivate?

#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
}

questionAnswers(2)

yourAnswerToTheQuestion