trong khi duyệt một trong các câu hỏi cũ của tôi trên constexpr tôi vấp vào một nhận xét quan trọng (IMHO). Về cơ bản nó nắm tới: (điều này là hợp pháp C++ 11 :()Tại sao constexpr hoạt động cho các chức năng không tinh khiết
constexpr double f(bool b)
{
return b? 42:42/(rand()+1); // how pure is rand ;)
}
Câu hỏi của tôi là những gì lý do này được cho phép theo tiêu chuẩn Kể từ khi Im một fan hâm mộ lớn của tính minh bạch referential Tôi hy vọng. họ có lý do chính đáng :) và tôi muốn biết điều đó.
BTW có liên quan Q nhưng hầu hết các A thậm chí không đề cập đến điều tinh khiết, hoặc khi họ làm họ không xác định lý do tại sao std cho phép điều này. Relation between constexpr and pure functions
rand() là một constexpr? – Yakk
no it isnt, đó là lý do tại sao tôi đặt;) trong các chú thích – NoSenseEtAl