[英]declare function pointer in templated class from template arguments
我正在嘗試從函數原型的模板參數聲明函數指針
template <typename ReturnType, typename... Args> class DllFunction {
public:
ReturnType (*fptr_)(Args...);
};
DllFunction<int(int)> f;
但是我得到這個錯誤:
錯誤:C2091:函數返回函數
您正在混合兩種不同的方式。
或者您聲明DllFunction
接收返回值和參數類型的可變列表
template <typename ReturnType, typename... Args> class DllFunction {
public:
ReturnType (*fptr_)(Args...);
};
但您必須避免以int(int)
形式調用它,而必須使用
// .........VVV return type
DllFunction<int, int> f;
// ..............^^^ arguments types
或者使用形式ReturnType(Args...)
調用,並且必須聲明一個DllFunction
對象,如下所示
template <typename>
class DllFunction;
template <typename ReturnType, typename... Args>
class DllFunction<ReturnType(Args...)> {
public:
ReturnType (*fptr_)(Args...);
};
您也可以使用指針函數形式
template <typename>
class DllFunction;
template <typename ReturnType, typename... Args>
class DllFunction<ReturnType(*)(Args...)> {
public:
ReturnType (*fptr_)(Args...);
};
因此您可以將decltype()
用作模板類型
int foo (int);
DllFunction<decltype(&foo)> f;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.