有一個嘗試使用通常的方式與遞歸擴展包:在編譯時遞歸的最後一步擴展參數由模板參數包(值)
template<bool first> int func1(int value = 0) {
return some_func(first, value);
}
template<bool first, bool... args> int func1(int value = 0) {
return func1<args...>(some_func(first, value));
}
,FUNC1的調用是不明確的, 第一候選者是第一功能,很明顯,在我的情況下,一些具體的分工:
INT FUNC1(INT)與布爾第一= FALSE]
但第二個是
int func1(int)[with bool first = false; bool ... args = {}]
你看到那也是正確的 - 第一個參數後面的空集合。 有什麼想法來防止這種情況發生?
謝謝
似乎這種結構(實際上的std ::陣列不是必需的,但是從我的角度來看更有用, 的擴張可以通過使用類似C的陣列太存檔)可以減少到只有一個功能使用constexpr if – amigo421