Disclaimer: tento blogpost je napůl poznámka pro mě - až zase nebudu vědět, co s tou chybou, a budu zuřivě googlit, tak abych si tento popis vygooglil
Dneska při programování v C++ jsem narazil na zajímavou kompilační chybu C3493 s velmi výmluvným názvem “'maxValue' cannot be implicitly captured because no default capture mode has been specified”. Má fantazie bohužel neměla svůj nejlepší den, tak jsem se snažil onu chybu neinvenčně najít v MSDN. Zarazilo mě, že daná chyba se tam nenachází. Fáze 2 pracovně zvaná “Google” taktéž neuspěla – našel jsem pouze odkazy na Microsoftí Connect s popisem chyby, která se projevovala v Betě Visual Studia 2010.
Nebudu vás (a sebe, až to za půl roku budu číst) napínat – chyba se týká nově zavedených lambda výrazů v C++, což asi vysvětluje, proč jsem nebyl schopen rychle nic relevantního najít; asi se ještě lambdy v C++ moc nepoužívají, přestože je to moje nejoblíbenější featura z VS2010 (btw viděli jste přednášku na letošním PDC Lambdas, Lambdas Everywhere! od Herba Suttera (dlouholetý předseda C++ committee a nyní lead designed v C++ týmu v Microsoftu)? Tato moc pěkná přednáška přesně vystihuje můj názor na lambdy). Jak asi víte, tak narozdíl od C# je potřeba uvést (nebo tam vrazit implititně všechny, ale to není ono) všechny lokální proměnné, které chci vidět i v těle té lambdy. No a ona chybová hláška znamená jen a pouze to, že jsem na nějakou zapoměl a on ji pak v té lambdě nevidí, nemůže “zachytit” jeji hodnotu nebo referenci.