Самый последний проект предложения структурированных привязок (на котором была основана функция С++ 17) требует std::tuple_size, member get или std::get и std::tuple_element. Предыдущие черновики требуют только std::tuple_size и member get или std::get. Насколько я могу судить, дискуссия о добавлении этого не обсуждалась, она появилась только в окончательном проекте. Есть ли веская причина требовать специализацию tuple_element, учитывая, что я считаю, что она может быть реализована в целом как
template<std::size_t index, typename T>
struct tuple_element {
using type = decltype(std::get<index>(std::declval<T>()));
};
Кто-нибудь знает, почему это требование было добавлено?