一般的な構成ファイル パーサーを実装しようとしていますが、入力パラメーターの型に基づいて戻り値の型を決定できるメソッドをクラスに記述する方法を知りたいと思っています。これが私が意味することです:
class Config
{
...
template <typename T>
T GetData (const std::string &key, const T &defaultValue) const;
...
}
上記のメソッドを呼び出すには、次のようなものを使用する必要があります。
some_type data = Config::GetData<some_type>("some_key", defaultValue);
冗長な仕様を取り除くにはどうすればよいですか? boost::property_tree::ptree::get() がこのトリックを実行できることがわかりましたが、実装はかなり複雑で、この複雑な宣言を解読できませんでした:
template<class Type, class Translator>
typename boost::enable_if<detail::is_translator<Translator>, Type>::type
get(const path_type &path, Translator tr) const;
可能であれば、Config クラスを使用するコードでブーストへの依存関係を作成せずに、これを実行したいと考えています。
PS: C++ テンプレートに関しては、私は無知です :(