いったいぜんたいどこがダメなのよって話をあまり聞かない forがダメだとかテンプレートがダメとか じゃあどういう風にダメなのよって調べてまとめてみた エラーコードが書いてあるのは対象の下の行でエラーがでるってこと 解決策がないのは解決法を募集あるいは無理 同じテンプレートで明示を変更するのがダメ template <int N> void foo1(int a) { std::cout << N << ":" << a << std::endl; }; int main(int argc, char *argv[]){ foo1<1>(2); //2:2って表示されるよ!なんで? foo1<2>(2); } これはintだけどもちろん型名でも同様 解決法 template <int N> class foo1_a { public: void operator()(int a) { std