Почему этот фрагмент кода 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. У меня нетне сузить специфику, но этоТем не менее, это интересно.