Почему не существует void{}?

avatar
Gabriel
12 ноября 2018 в 14:13
240
1
7

Мне интересно, почему void() имеет значение void, но void{} не существует...? См. следующий ответ: https://coderhelper.com/a/37708167/293195

.

Например, в контексте:

template<typename R>
R foo(){
 return R{};
}
Источник
Barry
12 ноября 2018 в 14:16
4

Обязательный. Трудно понять, что вы ищете в ответе здесь. Потому что P0146 не был одобрен? Или потому, что когда была добавлена ​​инициализация фигурной скобки, никто не подумал о void... или с тех пор это не заботит. Или ...?

geza
12 ноября 2018 в 15:02
1

@Barry: есть масса вопросов «почему» в языковом дизайне, на которые можно ответить правильно и объективно. Когда кто-то задает вопрос, он не знает, что ответом будет «бог знает почему» или «это потому, что <причина>». Просто пример, вот вопрос «почему» с правильным ответом: coderhelper.com/questions/8911696/if-condition-with-nullable. Тем же человеком, который написал этот «обязательный» ответ. И даже ответ «бог знает почему» лучше, чем отказ. Таким образом, по крайней мере, мы знаем, что для чего-то нет особой причины (так что это не дизайнерское решение).

Barry
12 ноября 2018 в 15:38
0

@geza Вы предполагаете, что это один из тех вопросов «почему» в языковом дизайне, на которые можно ответить правильно и объективно? Если вы не предлагаете это, то я не понимаю смысла комментария. Я просто заявляю, что не знаю, как ответить на этот вопрос, потому что не верю, что на него может быть осмысленный и объективный ответ.

geza
12 ноября 2018 в 15:53
0

@Barry: Хорошо, тогда, может быть, я просто неправильно понял твои намерения.

Ответы (1)

avatar
cpplearner
12 ноября 2018 в 18:19
7

CWG 2351, решение по которому было принято в июне, узаконило void{}.