采用模板签名的C++结构

C++ structure taking template signature?

本文关键字:C++ 结构      更新时间:2023-10-16

我被要求这样做"事物;工作:

FunctSignature<int(const std::string &str)>::type f= &thisIsAFunction;
f("coucou");

为了实现这一点,他们要求我做:

第一:声明采用模板的结构

然后:声明与以前相同的结构,但这次必须对其进行部分专门化。

最后:该专业化将具有上述功能的签名形式。模板化的声明部分将声明其每个签名成员。

如果有人知道如何做这件事。。。救命!!!

提前感谢。

它遵循一个不涉及可变模板的基本实现:

#include <string>
#include <iostream>
template<class T>
struct FunctSignature { };
template<class Ret, class Arg>
struct FunctSignature<Ret(Arg)> {
    using type = Ret(*)(Arg);
};
int thisIsAFunction(const std::string &str) {
    std::cout << str << std::endl;
}
int main() {
    FunctSignature<int(const std::string &str)>::type f= &thisIsAFunction;
    f("cocou");
}

这里取而代之的是一个基于可变模板的:

template<typename T>
struct FunctSignature { };
template<typename Ret, typename... Args>
struct FunctSignature<Ret(Args...)> {
    using type = Ret(*)(Args...);
};