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?