#include

问题描述 投票:0回答:1
Identifier<const std::wstring&, int64_t> item_ref = item;

ITEM_REF具有正确的值。
当我将物品放入向量时。
std::vector< Identifier< const std::wstring&, int64_t > > collection; collection.emplace_back( item );

i在element in element in vector中的字符串引用中有无效的值,而在item_ref中的字符串参考中的无效值。
为什么它发生以及如何适合呢?

您首先使用

Identifier(Args...)
构造函数,然后使用另一个构造函数。
template< typename ... T > requires std::convertible_to< std::tuple< Args... >, std::tuple< T... > > Identifier( const Identifier< T... >& identifier ): std::tuple< Args... >(static_cast< std::tuple< T... > >(identifier)) {}

当传递给它时,首先将其作为参数创建给构造函数。然后,此参考为a

item

注意
c++ tuples c++20
1个回答
0
投票

static_cast

,因为这是模板类型。
这意味着您将参考文献抛弃,从而导致原始

std::tuple<T...>
的临时副本。然后,您将该副本的
T...

成员分配给A

std::wstring, int64_t
通过基础的构造。施工后,临时性被摧毁,留下引用已删除的物体。
	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.