gpt4 book ai didi

c++ - 使用 std::tuple_size 时产生 `error: incomplete type`

转载 作者:行者123 更新时间:2023-11-30 02:23:37 31 4
gpt4 key购买 nike

我在命名空间中有一个类模板
我在该 namespace 内有一个非成员函数,它返回一个 std::tuplestd::shared_ptr(s)<myown::myclass<Type>>
我调用了函数 F()并将其结果( std::tuple )传递给另一个非成员函数(在 myown 命名空间内)

namespace myown {

template<typename T> class myclass{ /*...*/};

template<> class myclass<void>{ /*...*/};

auto F()
{
return std::make_tuple(std::shared_ptr<myclass<int>>(),
std::shared_ptr<myclass<const char *>>(),
std::shared_ptr<myclass<int>>());
}

template <typename tup>
auto anotherF(tup&& result){
size_t s = std::tuple_size<tup>::value;//
/*...*/
}
}

int main()
{
auto tr = myown::F();
myown::anotherF(tr);
}

使用std::tuple_size<tup>结果 error: incomplete type...used in nested name specifier

最佳答案

您需要衰减类型以删除引用:

size_t s = std::tuple_size<std::decay_t<tup>>::value;

关于c++ - 使用 std::tuple_size 时产生 `error: incomplete type`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45959862/

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