https://stackoverflow.com/a/31860104瞭解C++ 11的解決方案,用於檢查一個成員函數
#include <iostream>
#include <string>
template<class T>
auto optionalToString(T* obj)
-> decltype( obj->toString() )
{
return obj->toString();
}
auto optionalToString(...) -> std::string
{
return "toString not defined";
}
struct TA
{
std::string toString() const
{
return "Hello";
}
};
struct TB
{
};
問題的存在>由於提出的解決方案optionalToString
,我怎麼可以用它來檢測TA具有的toString而TB沒有。
這是很難明白你在問什麼 –
@DavidHaim我改變了問題,希望現在你可以閱讀它。 – q0987
「檢測」是什麼意思?在'if constexpr(...)'上下文中?當你想要一個字符串? – Caleth