클래스에서 static constexpr
을 사용하면 클래스 정의 (참조 : this question) 외부에 코드가 필요하기 때문에 enum { my_const = 123; }
으로 내 상수를 정의하는 데 익숙합니다. 그러나 기능 기관에서는 어떨까요? 나는 그래서 내함수 내에서 상수로 선호하는 것은? constexpr const 또는 enum?
int foo(int x)
{
enum : int { bar = 456 };
return x + bar;
}
와 시간 뒤에 바보 해요 여부를 최근에 내가 몰래 봤는데 사람들은 (심지어 실제로 const
에 귀찮게하지 않음)의 기능에 constexpr
변수를 가지고, 나는 궁금해서, 내 질문 : constexpr 변수가 아닌 함수 본문에서 enum을 사용하면 어떤 이점이 있습니까?
C++ 1z가 나오고 (아마도 이번 7 월), 주류 컴파일러 지원을 얻게 될 때 자동으로 인라인 될 것이므로 클래스에서'static constexpr' 변수를 사용할 수 있습니다. 그러나 함수의 경우 상수에 대한 함수 안에'enum '을 선언한다는 것을 의미합니까? –
@ 대니얼 : 예, 편집을 참조하십시오. – einpoklum
함수 본체 안에 아무런 이점도 없다는 것이 거의 확실합니다. (비 정적 변수는 링키지가 필요없고 정적 변수는 함수 자체의 것을 공유 할 수 있습니다.) 실제로 C++ 표준에서는 허용되지 않습니다. (비록 어떤 컴파일러가 그것을 확장으로 허용 할지라도). 특히 g ++ (버전 6.3)에서 코드를 컴파일 할 수 없습니다. 나는이 문제에 대해 논평 대신 답을 내릴 수있는 확신이 없지만 그것이 틀렸다면 나는 놀랄 것이다. –