的存在,我試圖專注一個模板,如果一個類有這樣一個特殊的成員函數(在這裏發現了另一個例子):模板檢查重載成員函數
template <typename T>
class has_begin
{
typedef char one;
typedef long two;
template <typename C> static one test(decltype(&C::AnyFunc)) ;
template <typename C> static two test(...);
public:
enum { value = sizeof(test<T>(0)) == sizeof(char) };
enum { Yes = sizeof(has_begin<T>::test<T>(0)) == 1 };
enum { No = !Yes };
};
這種運作良好,直到AnyFunc
超載:
class B : public vector<int>
{
public:
void AnyFunc() const;
void AnyFunc();
};
如何重寫我的測試代碼以從我的模板中獲得「是」?
好問題。一個非常微不足道的問題,可以由於SFINAE而無聲無息地發現。 – iammilind