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

Ответы на вопрос(7)

Ваш ответ на вопрос