Copy elision
ಸಿ + + ಕಂಪ್ಯೂಟರ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ನಲ್ಲಿ, ಕಾಪಿ ಎಲಿಷನ್ ಎನ್ನುವುದು ಕಂಪೈಲರ್ ಆಪ್ಟಿಮೈಸೇಶನ್ ತಂತ್ರವನ್ನು ಸೂಚಿಸುತ್ತದೆ, ಇದು ವಸ್ತುಗಳ ಅನಗತ್ಯ ನಕಲನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ. ಸಿ + + ಭಾಷಾ ಮಾನದಂಡವು ಸಾಮಾನ್ಯವಾಗಿ ಯಾವುದೇ ಆಪ್ಟಿಮೈಸೇಶನ್ ಅನ್ನು ನಿರ್ವಹಿಸಲು ಅನುಷ್ಠಾನಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ, ಪರಿಣಾಮವಾಗಿ ಪ್ರೋಗ್ರಾಂನ ಗಮನಿಸಬಹುದಾದ ನಡವಳಿಕೆಯು ಒಂದೇ ಆಗಿರುತ್ತದೆ, ಅಂದರೆ. ನಟಿಸಿ, ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಮಾನದಂಡದಿಂದ ಆದೇಶಿಸಿದಂತೆ ನಿಖರವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಯಿತು. ಅದಕ್ಕೂ ಮೀರಿ, ಪ್ರೋಗ್ರಾಂನ ನಡವಳಿಕೆಯನ್ನು ಬದಲಾಯಿಸಿದರೂ ಸಹ ನಕಲು ಮಾಡುವುದನ್ನು ತೆಗೆದುಹಾಕಬಹುದಾದ ಕೆಲವು ಸಂದರ್ಭಗಳನ್ನು ಸಹ ಮಾನದಂಡವು ವಿವರಿಸುತ್ತದೆ, ಅತ್ಯಂತ ಸಾಮಾನ್ಯವಾದದ್ದು ರಿಟರ್ನ್ ವ್ಯಾಲ್ಯೂ ಆಪ್ಟಿಮೈಸೇಶನ್ (ಕೆಳಗೆ ನೋಡಿ). ಸಿ + + ಮಾನದಂಡದಲ್ಲಿ ವಿವರಿಸಲಾದ ಮತ್ತೊಂದು ವ್ಯಾಪಕವಾಗಿ ಅಳವಡಿಸಲಾದ ಆಪ್ಟಿಮೈಸೇಶನ್, ವರ್ಗ ಪ್ರಕಾರದ ತಾತ್ಕಾಲಿಕ ವಸ್ತುವನ್ನು ಅದೇ ಪ್ರಕಾರದ ವಸ್ತುವಿಗೆ ನಕಲಿಸಿದಾಗ. ಇದರ ಪರಿಣಾಮವಾಗಿ, ಕಾಪಿ-ಇನಿಶಿಯಲೈಸೇಶನ್ ಸಾಮಾನ್ಯವಾಗಿ ಕಾರ್ಯಕ್ಷಮತೆಯ ದೃಷ್ಟಿಯಿಂದ ನೇರ-ಇನಿಶಿಯಲೈಸೇಶನ್ಗೆ ಸಮಾನವಾಗಿರುತ್ತದೆ, ಆದರೆ ಶಬ್ದಾರ್ಥದಲ್ಲಿ ಅಲ್ಲ; ಕಾಪಿ-ಇನಿಶಿಯಲೈಸೇಶನ್ಗೆ ಇನ್ನೂ ಪ್ರವೇಶಿಸಬಹುದಾದ ಕಾಪಿ ಕನ್ಸ್ಟ್ರಕ್ಟರ್ ಅಗತ್ಯವಿರುತ್ತದೆ. ಉಲ್ಲೇಖಕ್ಕೆ ಬದ್ಧವಾಗಿರುವ ತಾತ್ಕಾಲಿಕ ವಸ್ತುವಿಗೆ ಆಪ್ಟಿಮೈಸೇಶನ್ ಅನ್ನು ಅನ್ವಯಿಸಲಾಗುವುದಿಲ್ಲ. ಉದಾಹರಣೆ #include <ಐಯೋಸ್ಟ್ರೀಮ್> ಇಂಟ್ ಎನ್ = 0; ರಚನೆ ಸಿ {ಸ್ಪಷ್ಟ ಸಿ (ಇಂಟ್) {} ಸಿ (ಕಾನ್ಸ್ಟ್ ಸಿ &) {+ + ಎನ್;}/ಕಾಪಿ ಕನ್ಸ್ಟ್ರಕ್ಟರ್ ಗೋಚರ ಅಡ್ಡಪರಿಣಾಮವನ್ನು ಹೊಂದಿದೆ};// ಇದು ಸ್ಥಿರ ಶೇಖರಣಾ ಅವಧಿಯೊಂದಿಗೆ ವಸ್ತುವನ್ನು ಮಾರ್ಪಡಿಸುತ್ತದೆ ಇಂಟ್ ಮೈನ್ () {ಸಿ ಸಿ1 (42);// ಡೈರೆಕ್ಟ್-ಇನಿಷಿಯಲೈಸೇಶನ್, ಸಿಃಃ ಸಿ (ಇಂಟ್) ಸಿ ಸಿ2 = ಸಿ (42);// ಕಾಪಿ-ಇನಿಷಿಯಲೈಸೇಶನ್, ಸಿಃಃ ಸಿ (ಕಾನ್ಸ್ಟ್ ಸಿ &) ಎಸ್ಟಿಡಿಃ: ಕೌಟ್ <<ಎನ್ <ಎಸ್ಟಿಡಿಃ ಎಂಡಿಎಲ್;/ಪ್ರಿಂಟ್ಸ್ 0 ನಕಲನ್ನು ಅಳಿಸಿಹಾಕಿದರೆ, ಇಲ್ಲದಿದ್ದರೆ 1] ಈ ಆಪ್ಟಿಮೈಸೇಶನ್ ತಾತ್ಕಾಲಿಕ ವಸ್ತುಗಳಿಗೆ ಮಾತ್ರ ಅನ್ವಯಿಸುತ್ತದೆಯೇ ಅಥವಾ ಹೆಸರಿಸಲಾದ ವಸ್ತುಗಳಿಗೂ ಅನ್ವಯಿಸುತ್ತದೆಯೇ ಎಂಬುದು ಅಸ್ಪಷ್ಟವಾಗಿದೆ. ಈ ಕೆಳಗಿನ ಮೂಲ ಸಂಕೇತವನ್ನು ನೀಡಲಾಗಿದೆಃ #include <iost stream> ಕಟ್ಟಳೆ C {C () = ಪೂರ್ವನಿಯೋಜಿತ; C (ಸ್ಥಿರಾಂಕ C &) {std:: cout <<"ಹಲೋ ವರ್ಲ್ಡ್! \n";}; ಅನೂರ್ಜಿತ f () {C c; ಎಸೆಯಿರಿ c;// ಹೆಸರಿಸಲಾದ ವಸ್ತುವನ್ನು c ಅನ್ನು ಎಕ್ಸೆಪ್ಶನ್ ಆಬ್ಜೆಕ್ಟ್ಗೆ ನಕಲಿಸುವುದು. //ಈ ಪ್ರತಿಯನ್ನು ಬಿಟ್ಟುಬಿಡಬಹುದೇ (ಬಿಟ್ಟುಬಿಡಬಹುದೇ) ಎಂಬುದು ಸ್ಪಷ್ಟವಾಗಿಲ್ಲ. int ಮುಖ್ಯ () {ಪ್ರಯತ್ನಿಸಿ {f ();} ಕ್ಯಾಚ್ (C c) {// ಎಕ್ಸೆಪ್ಶನ್ ಘೋಷಣೆಯಲ್ಲಿ ಎಕ್ಸೆಪ್ಶನ್ ವಸ್ತುವನ್ನು ತಾತ್ಕಾಲಿಕವಾಗಿ ನಕಲಿಸುವುದು. //ಈ ಪ್ರತಿಯನ್ನು ಬಿಟ್ಟುಬಿಡಬಹುದೇ (ಬಿಟ್ಟುಬಿಡಬಹುದೇ) ಎಂಬುದು ಸಹ ಅಸ್ಪಷ್ಟವಾಗಿದೆ. ಆದ್ದರಿಂದ ಅನುಗುಣವಾದ ಕಂಪೈಲರ್ "ಹಲೋ ವರ್ಲ್ಡ್!" ಅನ್ನು ಮುದ್ರಿಸುವ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಉತ್ಪಾದಿಸಬೇಕು. ಎರಡು ಬಾರಿ. ಸಿ + + ಮಾನದಂಡದ (ಸಿ + + 11) ಪ್ರಸ್ತುತ ಪರಿಷ್ಕರಣೆಯಲ್ಲಿ, ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲಾಗಿದೆ, ಮೂಲಭೂತವಾಗಿ ಹೆಸರಿಸಲಾದ ವಸ್ತುವಿನಿಂದ ಎಕ್ಸೆಪ್ಶನ್ ಆಬ್ಜೆಕ್ಟ್ಗೆ ನಕಲು ಮಾಡಲು ಮತ್ತು ಎಕ್ಸೆಪ್ಶನ್ ಹ್ಯಾಂಡ್ಲರ್ನಲ್ಲಿ ಘೋಷಿಸಲಾದ ವಸ್ತುವಿನ ನಕಲು ಎರಡನ್ನೂ ಅನುಮತಿಸುತ್ತದೆ. ಜಿ. ಸಿ. ಸಿ. ಯು ಕಾಪಿ-ಎಲಿಷನ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು-fno-elide-ಕಂಸ್ಟ್ರಕ್ಟರ್ಗಳ ಆಯ್ಕೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ. ರಿಟರ್ನ್ ವ್ಯಾಲ್ಯೂ ಆಪ್ಟಿಮೈಸೇಶನ್ ಅಥವಾ ಇತರ ಆಪ್ಟಿಮೈಸೇಶನ್ಗಳ ಪರಿಣಾಮಗಳನ್ನು ಗಮನಿಸಲು (ಅಥವಾ ಗಮನಿಸದೆ) ಈ ಆಯ್ಕೆಯು ಉಪಯುಕ್ತವಾಗಿದೆ. ಈ ಪ್ರಮುಖ ಆಪ್ಟಿಮೈಸೇಶನ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಸಾಮಾನ್ಯವಾಗಿ ಶಿಫಾರಸು ಮಾಡಲಾಗುವುದಿಲ್ಲ. ರಿಟರ್ನ್ ವ್ಯಾಲ್ಯೂ ಆಪ್ಟಿಮೈಸೇಶನ್ ಸಿ + + ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ಸಂದರ್ಭದಲ್ಲಿ, ರಿಟರ್ನ್ ವ್ಯಾಲ್ಯೂ ಆಪ್ಟಿಮೈಸೇಶನ್ (ಆರ್ವಿಒ) ಒಂದು ಕಂಪೈಲರ್ ಆಪ್ಟಿಮೈಸೇಶನ್ ಆಗಿದ್ದು ಅದು ಕಾರ್ಯದ ರಿಟರ್ನ್ ಮೌಲ್ಯವನ್ನು ಹಿಡಿದಿಡಲು ರಚಿಸಲಾದ ತಾತ್ಕಾಲಿಕ ವಸ್ತುವನ್ನು ತೆಗೆದುಹಾಕುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ಸಿ + + ಮಾನದಂಡದಿಂದ ಫಲಿತಾಂಶದ ಕಾರ್ಯಕ್ರಮದ ಗಮನಿಸಬಹುದಾದ ನಡವಳಿಕೆಯನ್ನು ಬದಲಾಯಿಸಲು ಆರ್ವಿಒಗೆ ಅವಕಾಶವಿದೆ. ಸಾರಾಂಶ ಸಾಮಾನ್ಯವಾಗಿ, ಸಿ + + ಮಾನದಂಡವು ಕಂಪೈಲರ್ಗೆ ಯಾವುದೇ ಆಪ್ಟಿಮೈಸೇಶನ್ ಅನ್ನು ನಿರ್ವಹಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ, ಪರಿಣಾಮವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಅದೇ ಗಮನಿಸಬಹುದಾದ ನಡವಳಿಕೆಯನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ (ಅಂದರೆ. ನಟಿಸುವುದು) ಮಾನದಂಡದ ಎಲ್ಲಾ ಅವಶ್ಯಕತೆಗಳನ್ನು ಪೂರೈಸಲಾಗಿದೆ. ಇದನ್ನು ಸಾಮಾನ್ಯವಾಗಿ "ಆಸ್-ಇಫ್ ರೂಲ್" ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ರಿಟರ್ನ್ ವ್ಯಾಲ್ಯೂ ಆಪ್ಟಿಮೈಸೇಶನ್ ಎಂಬ ಪದವು ಸಿ + + ಮಾನದಂಡದ ವಿಶೇಷ ಷರತ್ತನ್ನು ಸೂಚಿಸುತ್ತದೆ, ಅದು "ಇಫ್-ಇಫ್" ನಿಯಮಕ್ಕಿಂತಲೂ ಮುಂದೆ ಹೋಗುತ್ತದೆಃ ಕಾಪಿ ಕನ್ಸ್ಟ್ರಕ್ಟರ್ ಅಡ್ಡಪರಿಣಾಮಗಳನ್ನು ಹೊಂದಿದ್ದರೂ ಸಹ, ರಿಟರ್ನ್ ಸ್ಟೇಟ್ಮೆಂಟ್ನಿಂದ ಉಂಟಾಗುವ ಕಾಪಿ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಅನುಷ್ಠಾನವು ಬಿಟ್ಟುಬಿಡಬಹುದು. ಕಾಪಿ ಕನ್ಸ್ಟ್ರಕ್ಟರ್ ಗೋಚರ ಅಡ್ಡಪರಿಣಾಮವನ್ನು (ಮುದ್ರಣ ಪಠ್ಯ) ಹೊಂದಿದ್ದರೂ ಸಹ, ಅನುಷ್ಠಾನವು ಒಂದು ಅಥವಾ ಎರಡೂ ಪ್ರತಿಗಳನ್ನು ತೆಗೆದುಹಾಕುವ ಸನ್ನಿವೇಶವನ್ನು ಈ ಕೆಳಗಿನ ಉದಾಹರಣೆಯು ತೋರಿಸುತ್ತದೆ. ತೆಗೆದುಹಾಕಬಹುದಾದ ಮೊದಲ ಪ್ರತಿಯು ಹೆಸರಿಲ್ಲದ ತಾತ್ಕಾಲಿಕ ಸಿ ಅನ್ನು ಎಫ್ ನ ರಿಟರ್ನ್ ಮೌಲ್ಯದ ಕಾರ್ಯಕ್ಕೆ ನಕಲಿಸಬಹುದಾದ ನಕಲಾಗಿದೆ. ತೆಗೆದುಹಾಕಬಹುದಾದ ಎರಡನೇ ಪ್ರತಿಯು ಒಬಿಜೆಗೆ ಎಫ್ ಹಿಂದಿರುಗಿಸಿದ ತಾತ್ಕಾಲಿಕ ವಸ್ತುವಿನ ನಕಲಾಗಿದೆ. ಕಂಪೈಲರ್ ಮತ್ತು ಆ ಕಂಪೈಲರ್ನ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಅವಲಂಬಿಸಿ, ಪರಿಣಾಮವಾಗಿ ಬರುವ ಪ್ರೋಗ್ರಾಂ ಈ ಕೆಳಗಿನ ಯಾವುದೇ ಔಟ್ಪುಟ್ಗಳನ್ನು ಪ್ರದರ್ಶಿಸಬಹುದುಃ ಹಲೋ ವರ್ಲ್ಡ್! ಒಂದು ಪ್ರತಿಯನ್ನು ತಯಾರಿಸಲಾಯಿತು. ಒಂದು ಪ್ರತಿಯನ್ನು ತಯಾರಿಸಲಾಯಿತು. ಹಲೋ ವರ್ಲ್ಡ್! ಒಂದು ಪ್ರತಿಯನ್ನು ತಯಾರಿಸಲಾಯಿತು. ಹಲೋ ವರ್ಲ್ಡ್! ಒಂದು ಕಾರ್ಯದಿಂದ ಅಂತರ್ನಿರ್ಮಿತ ರೀತಿಯ ವಸ್ತುವನ್ನು ಹಿಂದಿರುಗಿಸುವ ಹಿನ್ನೆಲೆ ಸಾಮಾನ್ಯವಾಗಿ ಕಡಿಮೆ ಅಥವಾ ಯಾವುದೇ ಓವರ್ಹೆಡ್ ಅನ್ನು ಹೊಂದಿರುವುದಿಲ್ಲ, ಏಕೆಂದರೆ ವಸ್ತುವು ಸಾಮಾನ್ಯವಾಗಿ ಸಿಪಿಯು ರಿಜಿಸ್ಟರ್ನಲ್ಲಿ ಹೊಂದಿಕೊಳ್ಳುತ್ತದೆ. ವರ್ಗ ಪ್ರಕಾರದ ದೊಡ್ಡ ವಸ್ತುವನ್ನು ಹಿಂದಿರುಗಿಸಲು ಒಂದು ಮೆಮೊರಿ ಸ್ಥಳದಿಂದ ಇನ್ನೊಂದಕ್ಕೆ ನಕಲು ಮಾಡುವುದು ಹೆಚ್ಚು ದುಬಾರಿಯಾಗಬಹುದು. ಇದನ್ನು ತಪ್ಪಿಸಲು, ಅನುಷ್ಠಾನವು ಕರೆ ಮಾಡುವವರ ಸ್ಟ್ಯಾಕ್ ಫ್ರೇಮ್ನಲ್ಲಿ ಗುಪ್ತ ವಸ್ತುವನ್ನು ರಚಿಸಬಹುದು ಮತ್ತು ಈ ವಸ್ತುವಿನ ವಿಳಾಸವನ್ನು ಕಾರ್ಯಕ್ಕೆ ರವಾನಿಸಬಹುದು. ಕಾರ್ಯದ ಹಿಂತಿರುಗಿಸುವ ಮೌಲ್ಯವನ್ನು ನಂತರ ಗುಪ್ತ ವಸ್ತುವಿಗೆ ನಕಲಿಸಲಾಗುತ್ತದೆ. ಹೀಗಾಗಿ, ಈ ರೀತಿಯ ಕೋಡ್ಃ ಸ್ಟ್ರಕ್ಟ್ ಡೇಟಾ {ಚಾರ್ ಬೈಟ್ಗಳು [16];}; ಡೇಟಾ ಎಫ್ () {ಡೇಟಾ ಫಲಿತಾಂಶ = {};// ಫಲಿತಾಂಶ ರಿಟರ್ನ್ ಫಲಿತಾಂಶವನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ;} ಇಂಟ ಮೈನ್ () {ಡೇಟಾ ಡಿ = ಎಫ್ ();} ಇದಕ್ಕೆ ಸಮಾನವಾದ ಕೋಡ್ ಅನ್ನು ರಚಿಸಬಹುದುಃ ಸ್ಟ್ರಕ್ಟ್ ಡೇಟಾ {ಚಾರ್ ಬೈಟ್ಗಳು [16];}; ಡೇಟಾ * ಎಫ್ (ಡೇಟಾ * _ ಹಿಡನ್ಅಡ್ಡ್ರೆಸ್) {ಡೇಟಾ ಫಲಿತಾಂಶ = {};// ಫಲಿತಾಂಶವನ್ನು ಹಿಡನ್ ಆಬ್ಜೆಕ್ಟ್ಗೆ ನಕಲಿಸಿ * _ ಹಿಡನ್ಅಡ್ಡ್ರೆಸ್ = ಫಲಿತಾಂಶ; ರಿಟರ್ನ್ _ ಹಿಡನ್ಅಡ್ಡ್ರೆಸ್;} ಇಂಟ ಮೇನ್ () {ಡೇಟಾ _ ಹಿಡನ್;// ಹಿಡನ್ ಆಬ್ಜೆಕ್ಟ್ ಡೇಟಾ ಡಿ = * ಎಫ್ (& _ ಹಿಡನ್) ಅನ್ನು ರಚಿಸಿ;// ಫಲಿತಾಂಶವನ್ನು ಡಿ ಆಗಿ ನಕಲಿಸಿ ಇದು ಡೇಟಾ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಎರಡು ಬಾರಿ ನಕಲಿಸಲು ಕಾರಣವಾಗುತ್ತದೆ. ಸಿ + + ನ ವಿಕಾಸದ ಆರಂಭಿಕ ಹಂತಗಳಲ್ಲಿ, ಒಂದು ವರ್ಗ ಪ್ರಕಾರದ ವಸ್ತುವನ್ನು ಕಾರ್ಯದಿಂದ ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಹಿಂದಿರುಗಿಸಲು ಭಾಷೆಯ ಅಸಮರ್ಥತೆಯನ್ನು ದೌರ್ಬಲ್ಯವೆಂದು ಪರಿಗಣಿಸಲಾಗಿತ್ತು. 1991ರ ಸುಮಾರಿಗೆ, ವಾಲ್ಟರ್ ಬ್ರೈಟ್ ನಕಲು ಮಾಡುವುದನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಒಂದು ತಂತ್ರವನ್ನು ಜಾರಿಗೆ ತಂದರು, ಕಾರ್ಯದೊಳಗಿನ ಗುಪ್ತ ವಸ್ತು ಮತ್ತು ಹೆಸರಿಸಲಾದ ವಸ್ತುವನ್ನು ಫಲಿತಾಂಶವನ್ನು ಹಿಡಿದಿಡಲು ಬಳಸುವ ವಸ್ತುವಿನೊಂದಿಗೆ ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಬದಲಾಯಿಸಿದರುಃ ಸ್ಟ್ರಕ್ಟ್ ಡೇಟಾ {ಚಾರ್ ಬೈಟ್ಗಳು [16];}; ಶೂನ್ಯ ಎಫ್ (ಡೇಟಾ * ಪಿ) {// ಫಲಿತಾಂಶವನ್ನು ನೇರವಾಗಿ * ಪಿ} ಇಂಟ್ ಮೇನ್ () {ಡೇಟಾ ಡಿ; ಎಫ್ (& ಡಿ);} ಬ್ರೈಟ್ ತನ್ನ ಝಾರ್ಟೆಕ್ ಸಿ + + ಕಂಪೈಲರ್ನಲ್ಲಿ ಈ ಆಪ್ಟಿಮೈಸೇಶನ್ ಅನ್ನು ಜಾರಿಗೆ ತಂದರು. ಈ ನಿರ್ದಿಷ್ಟ ತಂತ್ರವನ್ನು ನಂತರ "ರಿಟರ್ನ್ ವ್ಯಾಲ್ಯೂ ಆಪ್ಟಿಮೈಸೇಶನ್" (ಎನ್. ಆರ್. ವಿ. ಓ) ಎಂದು ಹೆಸರಿಸಲಾಯಿತು, ಇದು ಹೆಸರಿಸಲಾದ ವಸ್ತುವಿನ ನಕಲನ್ನು ಬಿಟ್ಟುಬಿಡುತ್ತದೆ ಎಂಬ ಅಂಶವನ್ನು ಉಲ್ಲೇಖಿಸುತ್ತದೆ. ಕಂಪೈಲರ್ ಬೆಂಬಲ ರಿಟರ್ನ್ ಮೌಲ್ಯ ಆಪ್ಟಿಮೈಸೇಶನ್ ಅನ್ನು ಹೆಚ್ಚಿನ ಕಂಪೈಲರ್ಗಳಲ್ಲಿ ಬೆಂಬಲಿಸಲಾಗುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಕಂಪೈಲರ್ ಆಪ್ಟಿಮೈಸೇಶನ್ ಅನ್ನು ನಿರ್ವಹಿಸಲು ಸಾಧ್ಯವಾಗದ ಸಂದರ್ಭಗಳು ಇರಬಹುದು. ಒಂದು ಸಾಮಾನ್ಯ ಪ್ರಕರಣವೆಂದರೆ ಕಾರ್ಯವು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಮಾರ್ಗವನ್ನು ಅವಲಂಬಿಸಿ ವಿಭಿನ್ನ ಹೆಸರಿನ ವಸ್ತುಗಳನ್ನು ಹಿಂದಿರುಗಿಸಬಹುದುಃ #include <ಸ್ಟ್ರಿಂಗ್> std:: ಸ್ಟ್ರಿಂಗ್ F (ಬೂಲ್ ಕಾಂಡ = ಫಾಲ್ಸ್) {std:: ಸ್ಟ್ರಿಂಗ್ ಮೊದಲ ("ಮೊದಲ"); std:: ಸ್ಟ್ರಿಂಗ್ ಎರಡನೇ ("ಎರಡನೇ");// ಕಾರ್ಯವು ಅದರ ವಾದವನ್ನು ಅವಲಂಬಿಸಿ ಎರಡು ಹೆಸರಿನ ವಸ್ತುಗಳಲ್ಲಿ ಒಂದನ್ನು ಹಿಂದಿರುಗಿಸಬಹುದು. ಆರ್ವಿಒ ಅನ್ನು ರಿಟರ್ನ್ ಕಾಂಡ್ ಅನ್ನು ಅನ್ವಯಿಸಲಾಗುವುದಿಲ್ಲವೇ? ಮೊದಲನೆಯದುಃ ಎರಡನೆಯದು;} ಇಂಟ್ ಮೇನ್ () {ಎಸ್ಟಿಡಿಃಃ ಸ್ಟ್ರಿಂಗ್ ಫಲಿತಾಂಶ = ಎಫ್ ();} ಬಾಹ್ಯ ಕೊಂಡಿಗಳು ಸಿ + + ಕೋಡ್ ಕಂಪೈಲರ್ ಆಪ್ಟಿಮೈಸೇಶನ್ಗಳ ಸಿ + + ನಂತಹ cppreference.com ಉಲ್ಲೇಖಗಳ ಲೇಖನಗಳ ಮೇಲಿನ ಅಳಿಸುವಿಕೆಯನ್ನು ನಕಲಿಸಿ