Почему этот фрагмент кода C ++ компилируется (не-void функция не возвращает значение) [duplicate]
На этот вопрос уже есть ответ здесь:
Почему выпадение из конца непустой функции без возврата значения не приводит к ошибке компилятора? 8 ответовЯ нашел это в одной из моих библиотек этим утром:
static tvec4 Min(const tvec4& a, const tvec4& b, tvec4& out)
{
tvec3::Min(a,b,out);
out.w = min(a.w,b.w);
}
Я ожидаю ошибку компилятора, потому что этот метод ничего не возвращает, а тип возвращаемого значения неvoid
.
На ум приходят только две вещи:
Единственное место, где этот метод вызывается, возвращаемое значение не используется и не сохраняется. (Этот метод должен былvoid
-tvec4
возвращаемый тип - ошибка копирования и вставки)
построенный по умолчаниюtvec4
создается, что, кажется, немного отличается от всего остального в C ++.
Я не нашел ту часть спецификации C ++, которая решает эту проблему. Ссылки (га) приветствуются.
Обновить
Внесколько обстоятельства, это приводит к ошибке в VS2012. Я не сузил специфику, но, тем не менее, это интересно.