Evite llamar al constructor de movimientos

Tengo el siguiente ejemplo

#include <cstdint>

class FooC
{
public:
   FooC(uint16_t iPort, uint16_t iPin)
   : PORT(iPort)
   , PIN(iPin)
   {
   };

   ~FooC() = default;

   FooC() = delete;
   FooC(const FooC&) = delete;
   FooC(FooC&&) = delete;

private:
   const uint16_t PORT;
   const uint16_t PIN;
};

int main()
{
    FooC array[2] = {
       FooC(1,2),
       FooC(3,4)
    };
}

y no quiero llamar al constructor predeterminado, mover y copiar. Debido a eso borré las funciones. Desafortunadamente, esto produce el siguiente error (compilado con C ++ 11)

: En la función 'int main ()':

: 28: 5: error: uso de la función eliminada 'FooC :: FooC (FooC &&)'

 };

 ^

: 16: 4: nota: declarado aquí

FooC(FooC&&) = delete;

^~~~

: 28: 5: error: uso de la función eliminada 'FooC :: FooC (FooC &&)'

 };

 ^

: 16: 4: nota: declarado aquí

FooC(FooC&&) = delete;

^~~~

Compiler devuelto: 1

¿Es posible forzar en este ejemplo la invocación del constructor con los parámetros y aún eliminar el constructor predeterminado, mover y copiar?

Respuestas a la pregunta(2)

Su respuesta a la pregunta