«constexpr» 태그된 질문

constexpr은 C ++ 11에 도입 된 수정 자로서, 함수 또는 변수의 값이 알려져 있거나 컴파일 타임에 계산 될 수 있음을 컴파일러에 알립니다. 따라서 그렇지 않으면 불가능한 곳에서 상수로 사용할 수 있습니다.

1
__func__ 포인터의 두 constexpr 인스턴스의 차이점이 여전히 constexpr입니까?
이것이 유효한 C ++입니까? int main() { constexpr auto sz = __func__ - __func__; return sz; } GCC와 MSVC는 괜찮다고 생각하지만 Clang은 그렇지 않다고 생각합니다. 컴파일러 탐색기 . 모든 컴파일러는 이것이 컴파일러 탐색기 라는 것에 동의합니다 . int main() { constexpr auto p = __func__; constexpr auto p2 = p; …

2
const expr을 그렇게 빨리 평가할 수있는 방법
컴파일 타임에 평가되는 const 표현식을 시험해 보았습니다. 그러나 컴파일 타임에 실행될 때 엄청나게 빠른 예를 들었습니다. #include<iostream> constexpr long int fib(int n) { return (n <= 1)? n : fib(n-1) + fib(n-2); } int main () { long int res = fib(45); std::cout << res; return 0; } 이 코드를 …
13 c++  const  constexpr 

1
constexpr 생성자에서 배열을 초기화하는 것이 합법적입니까?
다음 코드는 합법입니까? template <int N> class foo { public: constexpr foo() { for (int i = 0; i < N; ++i) { v_[i] = i; } } private: int v_[N]; }; constexpr foo<5> bar; Clang은 수락하지만 GCC 및 MSVC는 거부합니다. GCC의 오류는 다음과 같습니다 main.cpp:15:18: error: 'constexpr foo<N>::foo() [with …

1
span은 constexpr 일 수 있습니까?
std :: span의 모든 생성자는 constexpr로 선언되었지만 constexpr 컨텍스트에서 작동하도록 할 수는 없습니다. 아래의 constexpr을 주석 해제하면 컴파일 오류가 발생합니다. #include <array> #include <span> int main() { constexpr int carray[3] = { 0, 1, 2 }; constexpr std::array<int, 3> array{ 0, 1, 2 }; using S = std::span<const int, 3>; …
11 c++  constexpr  c++20 

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.