kee*_*bus 18 c++ templates variadic-templates c++11
我有一个简单而又令人生畏的问题,我自己无法解决.我有类似的东西
template<class T, class... Args>
T* create(SomeCastableType* args, size_t numArgs)
{
return new T(static_cast<Args>(args[INDEX_OF_EXPANSION])...);
}
Run Code Online (Sandbox Code Playgroud)
假设SomeCastableType
可以转换为任何类型.显然我不能得到的是INDEX_OF_EXPANSION
.
非常感谢您的帮助.
Xeo*_*Xeo 21
指数诡计,yay~
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)>{});
}
Run Code Online (Sandbox Code Playgroud)
当然,我强烈建议使用智能指针而std::vector
不是原始指针.