gpt4 book ai didi

c++ - 在未评估的上下文中获取成员参数函数的返回类型

转载 作者:行者123 更新时间:2023-11-30 04:03:57 24 4
gpt4 key购买 nike

<分区>

给定以下代码(复杂代码的简化情况):

#include <type_traits>

template<unsigned i>
struct index_st
{
using type = void;
};

struct pack
{
template<unsigned index>
static typename index_st<index>::type get();

template<unsigned index>
using unpack_t = decltype(get<index>());
};

template<typename P, unsigned index>
struct unpack
{
using type = typename P::unpack_t<index>;
};

int main()
{
unpack<pack, 3> u;
}

gcc (4.8.1) 抛出以下编译错误:

sample.cpp:21:38: error: expected ';' before '<' token
using type = typename P::unpack_t<index>;
^
sample.cpp:21:38: error: expected unqualified-id before '<' token
sample.cpp: In instantiation of 'struct unpack<pack, 3u>':
sample.cpp:26:21: required from here
sample.cpp:21:38: error: 'typename pack::unpack_t' names 'template<unsigned int index> using unpack_t = decltype (get<index>())', which is not a type

我的目标是获取 pack::get<index>() 返回的类型在unpack里面结构。

无论有没有 using,我都尝试过这样做语句,使用 std::result_of和其他组合,但在所有情况下,我都无法获得 get 的返回类型(参数成员函数)。

正确的做法是什么?

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