0
我正在編碼的東西,我最終不得不使用虛擬參數來實現模板特化,因爲你不能重載的返回類型。我想知道這是否正確,即其他人是否做到了,或者有更好的方法去做。使用虛擬參數來協助模板特化
namespace ObjectDetail
{
template <typename T>
inline T get(Object&, int, T&);
template <>
inline std::string get(void* handle, int index, std::string& unused) // dummy argument.
{
return somelib_get_string(handle, index);
}
template <>
inline int get(void* handle, int index, int& unused) // dummy argument.
{
return somelib_get_int(handle, index);
}
} // namespace ObjectDetail
class Object
{
public:
std::string getString(int index) const
{
std::string unused; // dummy variable.
return ObjectDetail::get(m_handle, index, unused);
}
int getInt(int index) const
{
int unused; // dummy variable.
return ObjectDetail::get(m_handle, index, unused);
}
private:
void* m_handle;
}
我也希望編譯器(gcc 4.6.3)足夠聰明地發現虛擬參數沒有被實際使用。