に割り当てた関数ポインタstd::function
がnullptr
. !
-operator がそれを行うことを期待していましたが、関数に type の何かが割り当てられている場合にのみ機能するようですnullptr_t
。
typedef int (* initModuleProc)(int);
initModuleProc pProc = nullptr;
std::function<int (int)> m_pInit;
m_pInit = pProc;
std::cout << !pProc << std::endl; // True
std::cout << !m_pInit << std::endl; // False, even though it's clearly assigned a nullptr
m_pInit = nullptr;
std::cout << !m_pInit << std::endl; // True
今のところ、これを回避するためにこのヘルパー関数を作成しました。
template<typename T>
void AssignToFunction(std::function<T> &func, T* value)
{
if (value == nullptr)
{
func = nullptr;
}
else
{
func = value;
}
}