gpt4 book ai didi

c++ - 可变参数模板 : error: parameter packs not expanded with '...'

转载 作者:搜寻专家 更新时间:2023-10-31 00:09:32 24 4
gpt4 key购买 nike

我试图传递多个字符串来填充容器,但我收到此错误。使用 gcc 4.9.3

template< class T >
struct DataCompare {
bool operator()( const T& lhs, const T& rhs ) const
{
return operator<( lhs->getCode(), rhs->getCode() );
}
};

using AggContainer = boost::container::flat_set< T, C >;
using DataPtr = boost::shared_ptr< BomQueueData >;
using PropertyQueueDataLess = DataCompare< DataPtr >;
using QueueDataPtrs = AggContainer< DataPtr, DataLess >;

QueueDataPtrs vector_name;

template< class Container, typename ... Args >
static void fillWithData(Container & oDataContainer, Args const & ... args)
{
typedef typename Container::value_type::element_type QueueDataPtr;
oDataContainer.emplace(new QueueDataPtr(args));
}

fillWithData(vector_name, x, a, b, c, d); // compiler error

如何解决?

最佳答案

args 是参数包,不是参数。这就是为什么你不能使用:

DataContainer.emplace(new QueueDataPtr(args));

相反,使用

DataContainer.emplace(new QueueDataPtr(args...));

扩展参数包。

关于c++ - 可变参数模板 : error: parameter packs not expanded with '...' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42573805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com