Home > プログラミング > gcc 4.5.0 (experimental) でラムダ式をデマングルしてみた

gcc 4.5.0 (experimental) でラムダ式をデマングルしてみた

#include <iostream>
#include <typeinfo>
#include <cxxabi.h>
 
int main(int argc, char *argv[])
{
  auto f = [](int a) { return (a + 1) ^ 7;};
  int status;
  std::cout << abi::__cxa_demangle((typeid (f)).name(), 0, 0, &status) << std::endl;
  auto g = [](int a, float b) { return ((a + 1) ^ 7) + b;};
  std::cout << abi::__cxa_demangle((typeid (g)).name(), 0, 0, &status) << std::endl;
  auto h = [](int a, float b) { return ((a + 1) ^ 7) + b;};
  std::cout << abi::__cxa_demangle((typeid (h)).name(), 0, 0, &status) << std::endl;
  std::cout << abi::__cxa_demangle((typeid (h(1,1.0f))).name(), 0, 0, &status) << std::endl;
  return 0;
}

を実行して

main::{lambda(int)#1}
main::{lambda(int, float)#2}
main::{lambda(int, float)#3}
float

が出力された.

とりあえず,宣言された場所+lambdaに引数が連なって,ついでに何番目に宣言されたかがくっつくと.なるほど.

★下記に2つの英単語をスペースで区切って入力してください

Home > プログラミング > gcc 4.5.0 (experimental) でラムダ式をデマングルしてみた

Search
Feeds

Page Top