Почему не допускается перегрузить их в соответствии со стандартом языка для пользовательского использования?
Я полагаю, это потому, что стандартный комитет, представляя их, думал, чтосемантика всех четырех этих приведений четко определена и применима ко всем типам, которыми они должны быть.И в основном это правда.
Единственный известный мне встречный пример - это невозможность dynamic_cast
между экземплярами умного указателя:
shared_ptr<Derived> pd = dynamic_cast<shared_ptr<Derived> >(pb);
Полагаю, что у способности сделать это были бы некоторые достоинства.
Я не знаю, обсуждали ли это добровольцы, которые делали всю работу в комитете по стандартам (и мне лень гуглить), но если бы это обсуждалось (и я быдумаю, что) он был отклонен либо потому, что кто-то считал, что недостатки перевешивают преимущества, либо потому, что никто не нашел время сделать достойное предложение и довести его до конца. 1
1 Не смейтесь.На самом деле, есть много вещей, с которыми большинство согласны, что это было бы неплохо, и которые не могут быть реализованы, потому что никто не удосужился сделать работу по написанию достойного предложения и тратить время, необходимое для обсуждения и итеративного улучшения, пока оно не будет выполнено.можно голосовать на.