爲什麼此代碼(類M中的fnc值)不能通過SFINAE規則解決?我發現了一個錯誤: Error 1 error C2039: 'type' : is not a member of
'std::tr1::enable_if<_Test,_Type>'
當然類型是不是會員,它不是在enable_if這種一般版本定義但不是這背後的整體思路,使FNC的這個版本,如果布爾是真的
我一直在嘗試改編this 解決方案,以啓用普通(非成員)函數的存在。 在我的例子中,我有很多全局的字符串實用程序類型的函數,它們使用任何字符串類型T,例如T有一個char const* c_str() const成員函數。 目標是消除奇怪的編譯器錯誤消息,如果用戶試圖傳遞一些沒有c_str()成員函數的類型T,而不是編譯器說的「c_str():no such member function」,I'
Possible Duplicate: Is it possible to write a C++ template to check for a function's existence? 這是非常相似,我earlier question。我想檢查一個模板參數是否包含成員函數。 我試過這段代碼,與我在前一個問題中接受的答案類似。 struct A
{
int member_func(
如果我可以實例化某個模板類,我想使用SFINAE模式執行一些代碼。讓我們想象一下: //Only instantiable with types T for which T.x() is ok:
template <class T>
class TemplateClass
{
T t;
public:
void foo() {
t.x();
}
}
使用GCC編譯我從下面的代碼中總是得到false。我相信這是一個編譯器錯誤,但有人可能會更清楚。 #include <iostream>
template< class T >
class has_apply {
typedef char yes[1];
typedef char no[2];
template< class U, U u >
s