gpt4 book ai didi

c++ - 元组和可变参数模板的编译问题

转载 作者:行者123 更新时间:2023-11-28 03:24:26 25 4
gpt4 key购买 nike

我遇到了一个看似复杂的问题。

我正在尝试为 zip 函数创建一个迭代器类(试图模仿 python 的生成器 zip 函数)。

全类同学都在http://ideone.com/c7rm40

  template<size_t I = 0, typename... Tp>
inline typename std::enable_if<(I == sizeof...(Tp)), typename std::tuple<decltype(*Tp)...>>::type
constructImpl(std::tuple<Tp...> const& its) {

core/StarAlgorithm.hpp|550 col 3| error: expected ‘(’ before ‘constructImpl’
core/StarAlgorithm.hpp|550 col 3| error: expected ‘>’ before ‘constructImpl’
core/StarAlgorithm.hpp|550 col 45| error: template argument 2 is invalid
core/StarAlgorithm.hpp|550 col 47| error: expected ‘::’ before ‘{’ token
core/StarAlgorithm.hpp|550 col 47| error: expected identifier before ‘{’ token
core/StarAlgorithm.hpp|550 col 47| error: expected unqualified-id before ‘{’ token

我的问题是,这种方法是否有效?我不明白为什么它一定是错误的,或者编译器想从我这里得到什么。

但除此之外,如果我缺少更简单的方法,我会很高兴听到它。

最佳答案

我猜问题是 *Tp 不是 decltype 的有效表达式。

也许试试declval

std::tuple<decltype(*std::declval<Tp>())...>

或迭代器特征:

 std::tuple<typename std::iterator_traits<Tp>::value_type...>

关于c++ - 元组和可变参数模板的编译问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14540730/

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