Как предлагает @songyuanyao, вы могли бы работать и выдавать соответствующий typeid, так что, вероятно, это ошибка. Но - вот обходной путь для вас:
#include <iostream>
class Bobo
{public:
int member;
void function() {
auto lambda = [this]() { std::cout << member << '\n'; };
auto lambda2 = [my_bobo = this]() {
std::cout << typeid(std::decay_t<decltype(*my_bobo)>).name() << '\n';
};
lambda();
lambda2();
}
};
int main() {
Bobo bobo;
bobo.function();
}
Обратите внимание, что вы можете заменить typeid(...).name()
на правильное имя типа, полученное (во время компиляции!) В соответствии с этим ответом :
std::cout << type_name<std::decay_t<decltype(*my_bobo)>>() << '\n';