Мне был предоставлен фрагмент кода, который использует 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()? Это просто плохой код, который мне дал, не так ли?