gpt4 book ai didi

可变参数模板扩展期间的 C++ 类型索引

转载 作者:IT老高 更新时间:2023-10-28 22:02:39 26 4
gpt4 key购买 nike

我有一个自己无法解决的简单但令人生畏的问题。我有类似的东西

template<class T, class... Args>
T* create(SomeCastableType* args, size_t numArgs)
{
return new T(static_cast<Args>(args[INDEX_OF_EXPANSION])...);
}

假设 SomeCastableType 可以转换为任何类型。显然我无法得到的是 INDEX_OF_EXPANSION

非常感谢您的帮助。

最佳答案

Indices trick ,耶~

template<class T, class... Args, std::size_t... Is>
T* create(U* p, indices<Is...>){
return new T(static_cast<Args>(p[Is])...);
}

template<class T, class... Args>
T* create(U* p, std::size_t num_args){
assert(num_args == sizeof...(Args));
return create<T, Args...>(p, build_indices<sizeof...(Args)>{});
}

当然,我强烈建议使用 smart pointer和一个 std::vector 而不是原始指针。

关于可变参数模板扩展期间的 C++ 类型索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15014096/

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