What does this program do regarding copy/move elision, and what is guaranteed by C++17?struct W { W() { puts("ctor"); } W(const W&) { puts("copy"); } W(W&&) { puts("move"); } }; W make() { return W(); } int main() { W w = make(); }