2015-11-27 74 views
-1

我被要求這樣做「事」的工作:C++結構採取模板簽名?

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

爲了實現這一目標,他們要求我做:

第一:聲明結構採取模板

然後:聲明與以前一樣的結構,但是這次你必須部分地專門化它。

Finaly:該專業化將具有上述功能的簽名形式。模板化的聲明部分將聲明其每個簽名成員。

如果任何人有一個想法如何做到這一點的工作......幫助!

謝謝先進。

+1

我建議審查材料和筆記,那在你的課堂上每週都會教授這樣的作業,在這個作業被分配之前。我相信你會找到足夠的信息和解釋必要的課程材料,這是完成這項家庭作業所必需的。 –

+0

這個問題已經模糊意念......任何想法或暗示誰導致的解決方案將是偉大的! – Doctor

回答

1

它遵循不涉及可變參數模板的基本實現:一個可變參數模板基於一個

#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...); 
};