Мне был предоставлен фрагмент кода, который использует void()
в качестве аргумента. Код не компилируется... очевидно?
Можно ли создать экземпляр типа void
? Я полагал, что ответа нет, за исключением void*
. Например:
- Написание ошибок функции
void askVoid(void param) {}
:
Параметр может не иметь тип
void
- Написание функции
void askNaught() {}
и вызов ее с помощью askNaught (void()) `errors:
ошибка C2660:
takeNaught
: функция не принимает 1 аргумент
- Написание темплатной функции
template <typename T> void takeGeneric(T param) {}
и вызов ее с ошибкамиtakeGeneric(void())
:
ошибка C2893: не удалось специализировать шаблон функции
void takeGeneric(T)
- Объявление
void voidType
ошибок:
Неполный тип недопустим
- Объявление
auto autoVoid = void()
ошибок:
Невозможно вывести тип
auto
- Объявление
void* voidPtr
работает нормально, ноremove_pointer_t<decltype(voidPtr)> decltypeVoid
ошибки:
ошибка C2182:
decltypeVoid
: незаконное использование типаvoid
Что, верно? В С++ нет места для void()
? Это просто плохой код, который мне дал, не так ли?