std::tie 是否允许隐式转换?
Are implicit conversions allowed with std::tie?
在 c++11 中,std::tie 是否允许隐式转换?
以下代码编译并运行,但我不确定幕后到底发生了什么,或者这是否安全。
std::tuple<float,float> foo() { return std::make_tuple(0,0); }
double a, b;
std::tie(a,b) = foo(); // a and b are doubles but foo() returns floats
使用元组移动赋值运算符的模板版本会发生什么
template< class... UTypes >
tuple& operator=(tuple<UTypes...>&& other );
它使用自己的移动赋值语义一个一个地移动赋值各个元组成员。如果相应的成员是隐式可转换的 - 它们将被隐式转换。
这基本上是 std::pair
中类似功能的自然扩展,我们已经享受了很长时间。
在 c++11 中,std::tie 是否允许隐式转换?
以下代码编译并运行,但我不确定幕后到底发生了什么,或者这是否安全。
std::tuple<float,float> foo() { return std::make_tuple(0,0); }
double a, b;
std::tie(a,b) = foo(); // a and b are doubles but foo() returns floats
使用元组移动赋值运算符的模板版本会发生什么
template< class... UTypes >
tuple& operator=(tuple<UTypes...>&& other );
它使用自己的移动赋值语义一个一个地移动赋值各个元组成员。如果相应的成员是隐式可转换的 - 它们将被隐式转换。
这基本上是 std::pair
中类似功能的自然扩展,我们已经享受了很长时间。