C++

std::functionって大きいね

More than 3 years have passed since last update.

 関数ポインタ書くの面倒なので、std::functionにする場合、当たり前だけどstd::functionの方が大きいので注意が必要なんすね。

 イージング関数をメンバー関数ポインタに代入しといて~、オブジェクトの移動をイージング関数で制御して~みたいな場合だと関数ポインタにした方が良い場合がありそうっすね。


#include <iostream>
#include <functional>

int main()
{
std::cout << sizeof(std::function<int()>) << std::endl;
std::cout << sizeof(int(*)()) << std::endl;
}

MSVCだと、40、4。

clangだと、48、8。

gccだと、32、8。

という結果になったよ。MSVCだけ小さいのは64bitと32bitの違いとかかな?


clangとgccはここで調べたよ

http://melpon.org/wandbox/


参考にしたよ

関数ポインタよりもstd::functionを使おう