boostとstd::tuple<>を適切にサポートするSOCIライブラリを使用しています。
私の意図は、タプルを返すメソッドを必要とするという抽象インターフェースを定義することです。 SOCI_Streamable
gcc 4.7.2の特定のタプルで機能しますが、このインターフェイスを抽象化して任意のタプルで機能するように支援する必要があります。
言い換えれば、この要件をコードに変換したいと思います。クラスは、SOCI_Streamable
ある種のstd::tupleを返すことができるかどうかの要件を満たします-どのような種類でもかまいません。
要件を満たしている限り、以下のコードを大幅に変更しても問題ありません。ある種のテンプレートコードやCRTPが必要なのではないかと思いますが、よくわかりません。
#include<tuple>
// want to generalize next line to any std::tuple<>
typedef std::tuple<int const&,char const> some_tuple;
class SOCI_Streamable
{
public:
virtual some_tuple obj_as_tuple() const = 0;
};
class Foo :
public SOCI_Streamable
{
public:
virtual some_tuple obj_as_tuple() const
{
return std::forward_as_tuple( m_int, m_char );
}
private:
int m_int;
char m_char;
};
int main( int argc, char* argv[] )
{
}