結果類型我想專攻一個模板函數聲明爲:獲取的功能
template<typename Type> Type read(std::istream& is);
然後我有很多的靜態實現
static int read_integer(std::istream& is);
a.s.o.現在,我想要做一個宏這樣讀的是專業化是簡單的:
SPECIALIZE_READ(read_integer)
所以我想我會去的boost :: function_traits方式並宣佈SPECIALIZE_READ爲:
#define SPECIALIZE_READ(read_function) \
template<> boost::function_traits<read_function>::result_type read(std::istream& is) { \
return read_function(is); \
}
但VC++(2008)編譯器抱怨:'boost :: function_traits':'read_integer'不是用於參數'Function'的有效模板類型參數
想法?
那是因爲你傳遞一個值(read_function)作爲一種類型。它不會像C++ 03那樣工作。在C++ 0x中,你可以使用decltype(read_function)。 – ltjax 2011-01-10 15:27:35
嗯,是嗎?我還應該通過什麼?我過去已經成功地將類函數與function_traits一起使用,並且我也將它用於函數,但我不知道爲什麼它在這種情況下不起作用...... – Robert 2011-01-10 19:07:04