[英]Why is there no (implicit) conversion from std::tuple<Ts...>& to std::tuple<Ts&...>?
std::tuple<Ts...>&
到std::tuple<Ts&...>
的(隱式)轉換? 相反,EASTL 的tuple
實現提供了這種轉換。#include <EASTL/tuple.h>
#include <tuple>
#include <type_traits>
int main()
{
using TupleRef = std::tuple<int, float>&;
using RefTuple = std::tuple<int&, float&>;
using EATupleRef = eastl::tuple<int, float>&;
using EARefTuple = eastl::tuple<int&, float&>;
// static_assert(std::is_convertible_v<TupleRef, RefTuple>); // fails to compile
static_assert(std::is_convertible_v<EATupleRef, EARefTuple>);
return 0;
}
tuple
實現,我必須更改/添加什么?以下是 Godbolt 展示問題的鏈接: https://godbolt.org/z/zqfrETKEz
PS:我在 godbolt 中使用了c++17
標志,因為 EASTL 不使用c++20
標志編譯,但我也對c++20
解決方案感興趣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.