Наша структура ведения журнала, как и большинство фреймворков регистрации, использует макрос препроцессора __FUNCTION__
для вставки текущей функции в файлы журнала, чтобы наш журнал выглядел следующим образом:
L4 T11332 609661594 [PreProcessorFunctions::RegenerateLinkIDs] [ENTER]
L4 T11332 609661594 [PreProcessorFunctions::RegenerateLinkIDs] [EXIT]
L4 T11332 609661594 [ConfigMerger::ValidateConfigObject] [ENTER]
L3 T11332 609661594 [ConfigMerger::ValidateConfigObject] Configuration Exists: 1
Как мы уже начали использовать С++ 11, я заметил, что labmdas производит точный, но бесполезный вывод __FUNCTION__
:
L4 T9604 609661594 [`anonymous-namespace'::<lambda1>::operator ()] Writing EMX config file: C:\windows\TEMP\CBE01448-32A2-493A-A9A1-2112F5709028\CA37BE5C-B398-4D61-980D-66B8E1E6D001\\EMXConfiguration.xml
L4 T11332 609661594 [`anonymous-namespace'::<lambda3>::operator ()] Writing Auditing config file: C:\windows\TEMP\CBE01448-32A2-493A-A9A1-2112F5709028\CA37BE5C-B398-4D61-980D-66B8E1E6D001\\Auditing.xml
L4 T11960 609661594 [`anonymous-namespace'::<lambda2>::operator ()] Writing UEM config file: C:\windows\TEMP\CBE01448-32A2-493A-A9A1-2112F5709028\CA37BE5C-B398-4D61-980D-66B8E1E6D001\\Configuration.xml
Как вы можете видеть, вся область класса потеряна, и все, что мы знаем сейчас, это то, что это выражение о регистрации произошло от анонимной лямбда. Кто-нибудь имеет хорошую стратегию для выхода из закрывающей функции? Это, казалось бы, самое полезное для регистрации...