gpt4 book ai didi

c++ - 从 Typelist 子集创建函数指针

转载 作者:太空狗 更新时间:2023-10-29 21:46:20 35 4
gpt4 key购买 nike

我有一个与 this one 非常相似的 Typelist 实现.如果您不知道类型列表是什么:简而言之,它的行为类似于使用嵌套元组的可变参数模板。您可以阅读更多关于它们的信息 here .

我想从这个类型列表的子集构建一个函数指针类型。该子集由索引列表(任意大小)定义,所需操作在类型列表中查找这些索引,并使用这些类型作为参数定义函数指针的类型。

API 看起来像这样:

#include "typelist.h"
// typelist definition
typedef Typelist<float, Typelist<double, Typelist<int, NullType>>> Pixel;

typedef FunctionFromFields<Pixel, 0, 2>::Type field_0_and_2;
// I want the definition above to be equivalent to:
// typedef void (*field_0_and_2)(float*, int*);

假设这是可能的似乎是合理的,因为一切都在编译时已知,但我还没有找到正确的语法。

我不想使用可变参数模板来替换类型列表,但是它们可以用来定义指针类型。

有人做过类似的事情吗?

最佳答案

这应该相当容易。首先定义一个 typelist_nth 类型函数(留作练习;我假设你的 typelist.h 中有一个):

template<typename TL, int I> struct typelist_nth;

然后使用可变参数模板构建函数类型:

template<typename TL, int... Is> struct FunctionFromFields {
typedef void (*Type)(typename typelist_nth<TL, Is>::type *...);
};

关于c++ - 从 Typelist 子集创建函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15506127/

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