![](/img/trans.png)
[英]Variadic macros with zero arguments doesn't compile even with ##__VA_ARGS__
[英]Templated Sum(Args…) variadic function doesn't compile
我使用靜態struct member技巧來強制執行第二次傳遞編譯,但仍然出現錯誤:
struct S
{
template <typename T>
static T Sum(T t) {
return t;
}
template <typename T, typename ... Rest>
static auto Sum(T t, Rest... rest) -> decltype(t + Sum(rest...) )
{
return t + Sum(rest...);
}
};
int main()
{
auto x = S::Sum(1,2,3,4,5);
}
main.cpp:17:14:調用'Sum'沒有匹配函數
即使使用clang 4.0
,編譯也會失敗。
我設法使用decltype(auto)
編譯它(單獨auto
也會工作)而不是顯式尾部返回類型。
struct S
{
template <typename T>
static T Sum(T t) {
return t;
}
template <typename T, typename ... Rest>
static decltype(auto) Sum(T t, Rest... rest)
{
return t + Sum(rest...);
}
};
我認為編譯器無法推斷類型,因為推導僅取決於遞歸返回語句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.