2
我希望有與默認值作爲參數的函數的對象的方法被調用,與lambda函數被調用,例如像:缺省功能對象值作爲函數參數與一個lambda
#include <iostream>
#include <functional>
void func(const std::function<void()>& f = {}){
if(f) f();
else std::cout << "or not" << std::endl;
}
int main() {
func([](){ std::cout << "hello" << std::endl; });
func();
}
,但在Visual Studio 2012上,它不能編譯(例如使用Visual Studio 2015或g ++編譯),抱怨默認值{}。將其更改爲:
void func(const std::function<void()>& f = nullptr){
修復此問題。 1)這是編譯器不支持的功能嗎? 2)兩者是否有區別?
它適用於VS2015。對作品的某些定義。它編譯。 – doctorlove
具有默認功能意味着什麼? – NathanOliver
1)它用'C++ 14'編譯([link](http://ideone.com/TiTiP9))。 2)如果你想要一個* empty * labda,你可以這樣寫:'f = [](){}' - 不只是'f = {}',但是你總是進入'if'。 –