A inicialização da lista de cópias chama o copiador conceitualmente?

Antes do C ++ 11, podemos fazer a inicialização da cópia escrevendo algo comoA a = 1; que é mais ou menos equivalente aA a = A(1);. Ou seja, um temporário é criado primeiro e, em seguida, um copiador é chamado. Independentemente da opção de cópia, isso deve ser conceitualmente e o copiador deve estar acessível.

Com a inicialização da lista no C ++ 11, podemos fazer uma inicialização da lista de cópias escrevendoA a = {1, 2};. Na minha opinião, isso deve ser mais ou menos equivalente aA a = A(1, 2);. No entanto, no GCC e no clang,A a = {1, 2} compila mesmo quando o copiador e o movedor estão inacessíveis (declarando como privado). Ainda,A a = 1; não é compilado no GCC ou clang se o copiador / movedor correspondente correspondente estiver inacessível. Assim,A a = {1, 2}; parece mais ou menos equivalente aA a{1, 2}; que é a inicialização direta da lista. A diferença entre isso e a inicialização direta da lista real é queA a = {1, 2}; não compila se o ctor que leva duas polegadas é explícito. Nesse aspecto,A a = {1, 2}; se assemelha à inicialização de cópia.

Então, minha pergunta é: qual é a semântica exata de expressões comoA a = {1, 2}; conceitualmente? Porconceitualmente, a cópia elision não fica no caminho.