У меня есть следующий пример
#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)
};
}
и я не хочу вызывать конструктор по умолчанию, перемещать и копировать. В связи с этим я удалил функции. К сожалению, это приводит к следующей ошибке (скомпилировано с С++ 11)
: В функции 'int main()':
: 28: 5: ошибка: использование удаленной функции 'FooC :: FooC (FooC &&)'
}; ^
: 16: 4: примечание: заявлено здесь
FooC(FooC&&) = delete; ^~~~
: 28: 5: ошибка: использование удаленной функции 'FooC :: FooC (FooC &&)'
}; ^
: 16: 4: примечание: заявлено здесь
FooC(FooC&&) = delete; ^~~~
Компилятор вернул: 1
Можно ли в этом примере вызвать вызов конструктора с параметрами и при этом удалить конструктор по умолчанию, перемещение и копирование?