Evening, "Tan, Qiye via Libstdc++" writes: > I'm new in C++ who have an interest in the implementation of C++ STL. > Recently, I tried to implement my own vector template. However, when I > implemented my own iterator, I found that I had no idea how to > detect whether it is dereferencable. Therefore, I began to explore the > libstdc++, but I found that for some member functions, I can only find the > declaration but no definition. For example, the 'bool > __gnu_debug::_Safe_iterator_base::_M_singular( ) const', 'void > __gnu_debug::_Safe_iterator_base::_M_detach( )', etc. They are declared in > 'libstdc++-v3/include/debug/safe_base.h'. I can guess that '_M_singular' > may just check if '_M_sequence' is NULL, but I still want to find their > definition. Can someone help me? Thank you so much. _M_singular() and _M_detach() are implemented in src/c++11/debug.cc. A complete iterator implementation technically doesn't need either, these are used for debugging purposes in libstdc++, see also https://gcc.gnu.org/onlinedocs/gcc-12.2.0/libstdc++/api/a05206.html Do keep in mind that the __gnu_debug namespace is only used in case that _GLIBCXX_DEBUG is set, see https://gcc.gnu.org/onlinedocs/gcc-12.2.0/libstdc++/manual/manual/debug_mode.html Hope that helps, have a great night! -- Arsen Arsenović