C++幼女先輩

プログラミング成分多め

関数テンプレートは暗黙的インスタンス化できる

[Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ

で終わりなんだけど、少し悩んでやっぱ無理そうだったのでメモ 関数テンプレートで実装出来るのだが、使い勝手や最適化など考えて 関数オブジェクトにしたかったが 関数とクラスの テンプレートの違いで出来なかった

追記:やっぱできたぜ。メンバをテンプレートにすればOK

クラスのコンストラクタを可変長テンプレートにして ごにょごにょ - ムラサメ研究ブログ

テンプレート関数は暗黙的インスタンス化可能です!

template<T>
void hoge(T t){};


hoge(12);

可能というかむしろ、暗黙的に使うよね。

もちろん あえて明示的にも書ける

template<T>
void hoge(T t){};


hoge(12);

クラスは暗黙的インスタンス化できない

#include<iostream>


template <class T>
struct Stats{
    void operator()(T t){} const;
};

int main()
{
    Stats<int>()( 12 );
//    Stats()( 12 );   // 暗黙的インスタンス化できない
}

[Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ