Когда я работал над проектом, включающим определение предложений на заданном языке, я с удивлением обнаружил, что деструктор std::string
не является виртуальным.Это значительно усложнило специализацию этого класса (мне пришлось создать оболочку).Почему стандартный комитет решил, что этот класс не является виртуальным?
в /usr/lib64/gcc/x86_64-pc-linux-gnu/4.5.3/include/g++-v4/bits/basic_string.hимеем:
template<typename _CharT, typename _Traits, typename _Alloc>
class basic_string
{
...
/**
* @brief Destroy the string instance.
*/
~basic_string()
{ _M_rep()->_M_dispose(this->get_allocator()); }