SELECT
id,
customer.name,
date
FROM
customer
INNER JOIN (
SELECT
name
FROM
customer
GROUP BY
name,date
HAVING
COUNT(id) > 1
) temp ON customer.name = customer.name
ORDER BY
name;
reinterpret_cast一个unique_ptr<是否安全且便于携带? T>在unique_ptr< T2>如果T和T2是两种不同的类型?它们具有相同的大小和相同的位模式吗?
答案 0 :(得分:2)
没有
根据严格的别名规则,在不相关的类型(以及不同的模板实例是不相关的类型)之间进行转换是未定义的行为。
答案 1 :(得分:2)
(旁注显然我需要说明显而易见的事情:请不要重新解密。请参阅When should static_cast, dynamic_cast, const_cast and reinterpret_cast be used?)
使用shared_ptr,您可以使用
对于unique_ptr,您必须使用move进行转换。 C ++ 17实现了转换构造函数:
template<class U> explicit unique_ptr( U p );
请参阅http://en.cppreference.com/w/cpp/memory/unique_ptr/unique_ptr
2-4)在数组的特化中,行为与带有指针参数的构造函数相同 主要模板,除了它们只参与重载解析
U
与指针的类型相同,或 指针与element_type*
的类型相同,而U
是指针类型V*
,因此V(*)[]
可隐式转换为element_type(*)[]
。
答案 2 :(得分:0)
适用正常规则;如果reinterpret_cast
是使用该类型的指针构建的,那么.get()
的结果只能unique_ptr
{。}}。
未定义强制转换为任何其他类型的行为。