考慮下面的模板:訪問模板中函數模板參數的結果類型?
template<class T> class Container { private: boost::function<T> f; };
...及其實例,也許如下:
Container<bool(int, int)> myContainer;
,是否有訪問函數描述的返回類型和條件編譯對抗的方式它?例如,如果調用者指定他的函數返回bool(如上例),我想包含一個返回值的函數。如果他指定該函數是無效的,我不希望包含該函數。例如:
// Include if the return type of T is void
template<class T1, class T2>
void DoSomething(T1 t1, T2 t2)
{
f(t1, t2);
}
// Include if the return type of T is not void
template<class T1, class T2>
***whatever the return type is*** DoSomething(T1 t1, T2 t2)
{
return f(t1, t2);
}
我猜這裏有一個解決方案,但它可能涉及一些可怕的混淆模板元編程解決方案。我知道格雷戈爾康托爾瘋了考慮無限......模板元編程種類對我有同樣的影響:頁。
感謝您的任何想法。
RobinsonT
編輯:顯然,這可以通過實現一個不同的類(可能是從一個共同的基衍生的),一個稱爲VoidContainer,另一個稱爲ReturnsContainer(或類似的)來解決。然而,這似乎有點不滿意...
我認爲康託相當生氣,因爲他沒有從他的同時代人(和個人原因只有他自己知道)找到很多理解。你有SO社區的支持。 – UncleBens 2010-08-18 16:48:31
是的。但我想我要麼會瘋狂地試圖理解,要麼SO社區會試圖解釋。無論哪種方式,都有人將他的褲子放在椅子上,每隻鼻孔上都放一支鉛筆。 – Robinson 2010-08-18 16:51:24
這是Georg Cantor,不是Gregor Cantor。 – Henrik 2010-08-19 12:46:17