gpt4 book ai didi

c++ - 有没有办法将模板函数签名作为模板模板参数传递

转载 作者:IT老高 更新时间:2023-10-28 22:12:26 27 4
gpt4 key购买 nike

通过使用模板模板参数,可以将模板类传递给类,而无需在其参数上指定类型。我想知道是否有一种方法可以将函数的模板签名传递给模板模板参数,以便能够专门化要考虑转发的函数的哪个变体。

说清楚 - 我知道我不能这样做:

template <class T>
void foo() { /*...*/ }

template <template <class...> class FooType>
struct Foo { /*...*/ };

int main() {
Foo<decltype(foo)> f;
}

但不知何故,我希望能够将函数的模板签名传递给 Foo。有没有可能?

最佳答案

我不敢相信这是不可能的,所以我搜索了一下,找到了一种方法来做我想做的事。我使用带有语法的模板 using:

template <template<class... Args> class FooType>
struct Foo {
FooType<int> ft;
};

template <class Res, class... Args>
using FooSignature = Res(*)(Args...);

int foo() {
return 1;
}

int main() {
Foo<FooSignature> f;
f.ft = foo;
}

然而,这仍然留下了一个问题,因为标准规定了相反的东西,这怎么可能。

关于c++ - 有没有办法将模板函数签名作为模板模板参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36945759/

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