во время просмотра одного из моих старых вопросов о constexpr я наткнулся на очень важный комментарий (IMHO). В основном это сводится к: (это законно С++ 11:()
constexpr double f(bool b)
{
return b? 42:42/(rand()+1); // how pure is rand ;)
}
Мой вопрос в том, в чем причина, по которой это допускается стандартом. Поскольку я большой поклонник ссылочной прозрачности, я надеюсь, что у них есть веская причина:), и я хотел бы это знать.
Кстати, есть связанный Q, но большая часть A даже не упоминает чистую вещь, или когда они это делают, они не указывают аргументацию, почему std позволяет это. Связь между constexpr и чистыми функциями