Демонтаж лямбда-выражения в MSVC [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Демонтаж лямбда-выражения в MSVC [закрыто]

Сообщение Anonymous »

Описание проблемы:
Я хочу использовать bazel для создания cpptrace на Windows PR для этого.
Он прошел все тесты в Linux, но в Windows тест не пройден, как показано ниже
[----------] 6 tests from FromCurrent
[ RUN ] FromCurrent.Basic
test/unit/tracing/from_current.cpp(98): error: Value of: trace.frames.symbol
Expected: has substring "FromCurrent_Basic_Test::TestBody"
Actual: "::operator()()"

почему cpptrace получит лямбду, а не ожидаемую FromCurrent_Basic_Test::TestBody ?
TEST(FromCurrent, Basic) {
std::vector line_numbers;
bool does_enter_catch = false;
auto guard = cpptrace::detail::scope_exit([&] {
EXPECT_TRUE(does_enter_catch);
});
CPPTRACE_TRY {
line_numbers.insert(line_numbers.begin(), __LINE__ + 1);
static volatile int tco_guard = stacktrace_from_current_1(line_numbers);
(void)tco_guard;
} CPPTRACE_CATCH(const std::runtime_error& e) {

#define CPPTRACE_TRY \
try { \
[&]() -> ::cpptrace::detail::dont_return_from_try_catch_macros { \
CPPTRACE_PUSH_EXTENSION_WARNINGS \
__try { \
CPPTRACE_POP_EXTENSION_WARNINGS \
return [&]() -> ::cpptrace::detail::dont_return_from_try_catch_macros {
#define CPPTRACE_CATCH(param) \
return ::cpptrace::detail::dont_return_from_try_catch_macros(); \
}(); \
CPPTRACE_PUSH_EXTENSION_WARNINGS \
} __except(::cpptrace::detail::exception_filter(GetExceptionInformation())) { \
CPPTRACE_POP_EXTENSION_WARNINGS \
CPPTRACE_UNREACHABLE(); \
} \
}(); \
} catch(param)
#define CPPTRACE_SEH_TRY __try
#define CPPTRACE_SEH_EXCEPT(filter) \
__except(::cpptrace::detail::maybe_collect_trace(GetExceptionInformation(), (filter)))


Подробнее здесь: https://stackoverflow.com/questions/797 ... on-in-msvc
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»