int
テンプレートパラメータのいずれかまたはstd::vector<int>
依存を返すテンプレート関数を作成したいと思います。例えば:
struct ReturnInt {};
struct ReturnVec {};
[...]
int num = func<ReturnInt>();
std::vector<int> nums = func<ReturnVec>();
私は、TMPの非常に限られた経験に基づいて、これを素朴に実装しようと試みてきました。std::enable_if
明示的なテンプレートの特殊化、、、std::conditional
および/またはSFINAEに沿った何かが含まれるべきだと思います。しかし、これをコーディングしようとする私の試みはどれもコンパイルされず、簡単なテストで実行されることは言うまでもありません。
このリターンタイプの切り替えはどのように実装されますか?
編集:コメントに記載されているように、これは私の実際の問題を単純化したものです。それが役に立ったら、私はテンプレートパラメータを受け入れるクラスを持っています。パラメータに応じて、そのget()
メソッドが単一のオブジェクト/値、またはオブジェクト/値の標準コンテナのいずれかを返すようにします。