簡體   English   中英

模板函數中的變量類型名稱

[英]Variadic Typenames in Template Functions

我一直在玩變量模板一段時間,我發現了一些我想做的事情,但我不知道它是否可能。

我想要完成的一個粗略的想法是一個模板類,它根據存儲的對象的類型執行特定的操作。 我希望能夠處理繼承,因此類型“Derived”類將包含在僅處理“Base”對象的操作中。 我已經發現可變參數模板是我需要的,我只是不能讓它們像我想要的那樣工作。

基本上,我想知道你是否可以創建一個可變函數來接受可變數量的類型名而不是可變數量的參數。

這是我到目前為止:

template <typename T>
void DoesNotWork()
{
    //Do stuff
}

template <typename T, typename ...Args>
void DoesNotWork()
{
    //Do stuff

    DoesNotWork<Args...>();
} 

但是,因為兩個函數具有相同數量的參數,所以它會引發“模糊函數引用”錯誤。 如果我刪除top函數,最后一次遞歸調用會嘗試調用沒有定義的“DoesNotWork <>()”。

我該怎么做呢? 或者這不可能嗎?

Args為空時,無法消除兩個函數之間的歧義。

你需要的是:

template <typename T>
void DoesNotWork()
{
    //Do stuff
}

template <typename T1, typename T2, typename ...Args>
void DoesNotWork()
{
    //Do stuff

    DoesNotWork<T2, Args...>();
} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM