nodiscard
Tags: C++
Nodiscard
struct Vector
{
bool empty() const;
};
int main()
{
Vector vec;
vec.empty();
}
๋ง์ฝ ์์ ์ฝ๋์ ๊ฐ์ด ๋ฆฌํด๊ฐ์ ๋ํด ์๋ฌด๊ฒ๋ ํ์ง ์์์๋ ์ด๊ฒ์ ๋ฒ๊ทธ์ผ๊น?
์๊ณ ๋ณด๋ฉด ์ด๊ฒ์ c++ standard library ์ฌ์ฉ์๋ค์ด ๊ฐ์ฅ ํํ ๋ง์ฃผํ๊ฒ๋๋ ๋ฒ๊ทธ์ด๋ค. ์๋ํ๋ฉด ์ฌ์ฉ์๋ค์ Vector์์ ์๋ empty ํจ์๊ฐ ๋น์ด์์๋ true๋ฅผ ๋ฐํํ๊ธธ ๊ธฐ๋ํ๊ธฐ ๋๋ฌธ์ด๋ค. ํ์ง๋ง ํ์ค์ vec.empty()๋ Vector๊ฐ ๋น์ด์๋ ์๋๋ true๋ฅผ ๋ฐํํ๋ค.
struct Vector
{
[[nodiscard("You probably meant to call clear()")]]bool empty() const;
void clear();
};
int main()
{
Vector vec;
vec.empty();
}
๋ฐ๋ผ์ ์ด๋ ํ ํจ์๊ฐ ๋ฆฌํด๊ฐ์ ๋ฌด์ํ๊ณ ํธ์ถํ์๋ ๋ฒ๊ทธ์ธ๊ฐ๋ฅผ ์๊ฐํ๊ณ ์ ์ ํ๊ฒ nodiscard๋ฅผ ์ถ๊ฐํด์ฃผ๋๊ฒ์ด ํ์ํ๋ค.
ํ์ ๋ํ nodiscard๋ก ๋งํน๋ ์ ์๋ค.
struct [[nodiscard("This is an error type!!")]] Error {};
Error do_thing();
int main()
{
do_thing();
}
Leave a comment