部分的なテンプレートの特殊化に関する情報を調査してから 1 時間経ちました。残念ながら、これは成功していません..まだ多くの情報を見つけましたが、問題を解決することはできません. だから誰かが私を助けてくれることを願っています。
次の最小限のコードを検討してください。
SQLObject.hpp
template<typename T>
class SQLObject
{
public:
template<typename U>
static std::list<T*> filter(const std::string& colum,const std::string& ope,const U& value);
static std::list<T*> filter(const Filter& filter);
}
#include "SQLObject.tpl"
SQLObject.tpl
#include "Filter.hpp"
/* This code do not work, but why ??? */
template<typename T>
template<>
std::list<T*> SQLObject<T>::filter<std::string>(const std::string& colum,const std::string& ope,const std::string& value)
{
// no to_string need whith std::string
return filter(Filter(colum,ope,value));
}
template<typename T>
template<typename U>
std::list<T*> SQLObject<T>::filter(const std::string& colum,const std::string& ope,const U& value)
{
//use to_string with all others types
return filter(Filter(colum,ope,std::to_string(value)));
}
template<typename T>
std::list<T*> SQLObject<T>::filter(const Filter& filter)
{
//some stuff
}
私の問題は次のとおりです。 std :: string でフィルターを特殊化できません。
そのため、単純なオーバーロードを試みましたが、成功しませんでした。それで、あなたが私を助けてくれることを願って、私はあなたに頼ります。