C以外のコードもemscriptenしてみる

emscriptenのwikiをみるかぎり、すでにかなり様々なアプリケーションがemscriptenで動いているようです。ちょっと試したところ、以下のようなC++11なコードも動きましたし、純粋にロジックだけのコードはかなり動くようですね。

#include <memory>
#include <iostream>

class guard {
public:
    ~guard() {
        std::cout << "guard end" << std::endl;
    }
};

int main() {
    {
        auto g = std::make_shared<guard>();
        std::cout << "one" << std::endl;
    }
    
    {
        auto g = std::make_shared<guard>();
        std::cout << "two" << std::endl;
    }
}

実行:

$ em++ -std=c++11 a.c
$ node a.out.js
one
guard end
two
guard end

llgoなどもllvm bitcodeを出力できるのでemscriptenでビルドできるはず、とおもって試してみたところビルドはできたのですが、ランタイムライブラリが足りずに実行まではいたりませんでした。後ほど試してみたいと思います。