0
我想用一個成員函數模板實現一個類,該成員函數模板採用可調用類型F並將其應用於實例。如果我聲明包含類的arg的成員函數模板,在Clang中使用的不完整類型無效使用
這編譯並在Visual Studio 15中運行,但在鐺與錯誤失敗 [X86-64鐺4.0.0]錯誤:無效的使用不完全類型的「富」
struct Foo
{
template<typename F>
auto applyFunctionToMe(F&& func)->decltype(func(Foo()))
{
return func(*this);
}
int contents;
};
int main()
{
Foo bar;
auto result = bar.applyFunctionToMe([](const Foo& f){ return f.contents;});
return result;
}
是否有辦法讓它在C++ 11中的Clang下工作? 哪個編譯器根據標準更正確?
嘗試'decltype(func(* this))'而不是'decltype(func(Foo()))' – 0x5453
@ 0x5453是的,謝謝。你想做出我能接受的答案嗎? –
出於某種原因,我認爲這在這一點上超出了範圍。 –