template<size_t I, class. Types>
constexpr tuple_element_t<I, tuple<Types..>&
get(tuple<Types..>& t) noexcept;
template<size_t I, class. Types>
constexpr tuple_element_t<I, tuple<Types..>&
get(tuple<Types..>& t) noexcept; / #1
template<size_t I, class. Types>
constexpr const tuple_element_t<I, tuple<Types..>&
get(const tuple<Types..>& t) noexcept; / #2
template<size_t I, class. Types>
constexpr const tuple_element_t<I, tuple<Types..>& get(const tuple<Types..>& t) noexcept;
template<class T, class. Types>
constexpr T& get(tuple<Types..>& t) noexcept;
template<class T, class. Types>
constexpr T&& get(tuple<Types..>& t) noexcept;
template<class T, class. Types>
constexpr const T& get(const tuple<Types..>& t) noexcept;
template<class T, class. Types>
constexpr const T&& get(const tuple<Types..>& t) noexcept;