コンパイラにとって、「関数(invoke)」の方が「仮想関数を含むクラス(holder)」よりも実装が簡単なのでコードサイズが小さくなる 対象が関数のみであるということを利用して汎用的な解決策である仮想関数の利用を避けることができる []#include[][] <iostream>[] []#include[][] <memory>[] []#include[][] <boost/type_traits.hpp>[] []#include[][] <boost/mpl/if.hpp>[] []using[] []namespace[] []std[]; []struct[] []my_function[] { []int[] []operator[]()([]double[], []float[]) []const[] { []wcout[] << []L[][]"my_function