是否可以使用模板元編程將任何結構或類轉換爲元組?TMP:如何編寫將任何結構轉換爲元組的模板代碼?
例如:
struct Foo
{
char c;
int i;
std::string s;
};
typedef std::tuple< char, int, std::string > Foo_Tuple;
這將是很好有一些模板代碼,這將產生Foo_Tuple自動地對我。
ANSWER
這是矯枉過正這樣一個簡單的例子,但對於更復雜的情況下(如ORM或任何時候,你需要寫很多的樣板代碼,僅僅模板或宏不足以完成任務),Boost Mirror看起來可能非常有用。我已經深入瞭解Boost Mirror:基本的反射功能(在Mirror和Puddle中)不難理解,設置起來很容易,而且看起來相當廣泛(可以處理許多構造,包括C++ 11枚舉類等)。我發現這個基本功能已經足夠了 - 我只需要使用MACROS就可以將我的類暴露給Reflection(這樣我就不必編寫boiler-plate代碼)。工廠生成器似乎也非常強大(使用相同的初始宏設置,你可以交換任何你喜歡的工廠生成器來輸出JSON,SOCI或流等),但是具有更大的學習曲線/設置,如果你想寫你自己的工廠生成器。最後幾個注意事項:通過一些小的調整,我能夠在gcc 4.7.2上使用C++ 11;此外,文檔已經很好地充實了,並且似乎有足夠的例子可以快速實現。
'的std ::元組'嘿嘿 –
Pubby
我知道我會大聲地譴責建議,但我認爲在這種情況下'reinterpret_cast'將在大多數平臺上工作。 –
@JamesBrock Boo!嘶! [你的建議不好,你應該感覺不好](http://www.youtube.com/watch?v=jG2KMkQLZmI)! –