Буквальный ответ заключается в том, что такая спецификация будет рекурсивной (вы говорите, что присвоение должно быть noexcept
, если присвоение noexcept
).
Но, вероятно, более полезный ответ заключается в том, что, посколькуany
может потребоваться выделить, вы действительно можете назначить noexcept
только в том случае, если decay_t<ValueType>
достаточно
- достаточно мало (чтобы не нуждаться в распределении), и
- nothrow move constructible и
- nothrow constructible from
ValueType
Единственный способ указать условие noexcept
потребует от вас также указать, что означает «достаточно маленький»- что ограничило бы свободу реализации для сомнительной выгоды.
Стандартная библиотека обычно не использует условное noexcept - так почему это будет ... исключением?