2016-12-24 27 views
7

考慮下面的代碼:非捕獲通用lambdas衰減到函數指針?

int main() { 
    auto l = [](auto){}; 
    void(*p)(int) = l; 
} 

它的工作原理只是都與GCCclang罰款。
讓我們考慮以下稍作修改的版本:

int main() { 
    auto l = [](auto...){}; 
    void(*p)(int) = l; 
} 

在這種情況下,依然鏗鏘而accepts it GCC rejects it

是否有任何理由讓這段代碼被拒絕或者它是編譯器的錯誤?


我要開一個問題,但我想知道如果存在,可能已被他們中的一個,而不是由另一種實現的任何建議。

+1

GCC編譯器(5.1.0)告訴你它沒有實現:「對不起,未實現:將使用'...'的lambda轉換爲函數指針」 –

+0

@latedeveloper Ahahah ...我在移動設備上嘗試了它並顯示錯誤消息更短(可能被刪除),而手機上的godbolt遠不是用戶友好的。良好的發現,沒有看到它。所以,我不會公開任何問題,他們已經知道了!謝謝。我要結束我自己的問題。 – skypjack

+3

錯誤信息很清楚,這裏沒有實際的問題。 – skypjack

回答