Временные объекты и конструктор копирования

Я читаю о конструкторах копирования и различиях между инициализацией копирования и прямой инициализацией. Я знаю, что копирование и прямая инициализация различаются только для типов (определяемых пользователем) классов, а первое подразумевает иногда неявное преобразование (конструктором преобразования). Например, если бы я мог инициализировать объект класса A:

class A {
  public:
    // default constructor
    A() : a(1) {}
    // converting constructor
    A(int i) : a(i) {}
    // copy constructor
    A(const A &other) : a(other.a) {}
  private:
    int a;
};

int main()
{
  // calls A::A(int)
  A a(10);
  // calls A::A(int) to construct a temporary A (if converting constructor is not explicit) 
  // and then calls A::A(const A&) (if no elision is performed)
  A b=10;
  // calls copy constructor A::A(const A&) to construct an A from a temporary A
  A c=A();
  // what does this line do?
  A d(A());
} 

Я читал, что последняя строка не создает A путем прямой инициализации d из временного A(), но объявляет функцию с именем d, которая возвращает A и принимает аргумент типа функции (указатель на функцию действительно). Итак, мой вопрос: это правда? и если это правда, как я могу выполнить прямую инициализацию объекта из временного типа:

type_1 name(type_2(args));

предполагая, что type_1 имеет конструктор, который принимает параметр типа type_2

Это то, что нельзя сделать?