«language-lawyer» 태그된 질문

프로그래밍 언어 및 환경의 공식 또는 권위있는 사양의 복잡성에 대한 질문

3
언제 @classmethod를 사용해야하고 언제 def method (self)를 사용해야합니까?
전에 사용하지 않은 Django 앱을 통합하는 동안 클래스에서 함수를 정의하는 데 사용되는 두 가지 다른 방법을 발견했습니다. 저자는 둘 다 매우 의도적으로 사용하는 것 같습니다. 첫 번째는 내가 많이 사용하는 것입니다. class Dummy(object): def some_function(self,*args,**kwargs): do something here self is the class instance 다른 하나는 내가 사용하지 않는 것입니다. 주로 …

2
Roslyn에서 비동기 상태 머신 클래스 (구조체가 아님)가있는 이유는 무엇입니까?
이 매우 간단한 비동기 메서드를 고려해 봅시다. static async Task myMethodAsync() { await Task.Delay(500); } VS2013 (Pre Roslyn 컴파일러)으로 이것을 컴파일하면 생성 된 상태 머신이 구조체입니다. private struct <myMethodAsync>d__0 : IAsyncStateMachine { ... void IAsyncStateMachine.MoveNext() { ... } } VS2015 (Roslyn)로 컴파일 할 때 생성 된 코드는 다음과 같습니다. private …

6
C ++에서 참조가 "const"가 아닌 이유는 무엇입니까?
"const 변수"는 일단 할당되면 다음과 같이 변수를 변경할 수 없음을 나타냅니다. int const i = 1; i = 2; 위의 프로그램은 컴파일에 실패합니다. gcc가 오류 메시지를 표시합니다. assignment of read-only variable 'i' 문제 없습니다. 이해할 수 있지만 다음 예는 이해를 초월합니다. #include<iostream> using namespace std; int main() { boolalpha(cout); int …



3
정의되지 않은 동작을 포함하는 소스 코드가 컴파일러를 충돌시키는 것이 합법적입니까?
정의되지 않은 동작을 호출하는 잘못 작성된 C ++ 소스 코드를 컴파일한다고 가정 해 보겠습니다. C ++ 언어 사양이 "적합한"컴파일러에서 허용되는 것으로 간주하는 관점에서 볼 때이 시나리오에서 "무엇이든"수행하면 컴파일러 충돌 (또는 내 암호 도용 또는 컴파일 타임에 오작동 또는 오류 발생)이 포함됩니다. 정의되지 않은 동작의 범위는 결과 실행 파일이 실행될 때 …

6
순수 함수 : "부작용 없음"은 "동일한 입력이 주어지면 항상 동일한 출력"을 의미합니까?
함수를 정의하는 두 가지 조건 pure은 다음과 같습니다. 부작용 없음 (즉, 로컬 범위 변경 만 허용됨) 동일한 입력이 주어지면 항상 동일한 출력을 반환합니다. 첫 번째 조건이 항상 참이면 두 번째 조건이 참이 아닌 경우가 있습니까? 즉, 첫 번째 조건에서만 실제로 필요합니까?

3
올바른 주소와 유형을 가진 포인터가 C ++ 17 이후로 여전히 유효한 포인터입니까?
( 이 질문과 답변을 참조하십시오 .) C ++ 17 표준 이전에는 [basic.compound] / 3 에 다음 문장이 포함되었습니다 . 유형 T의 객체가 주소 A에있는 경우 값이 주소 A 인 cv T * 유형의 포인터는 값을 획득 한 방법에 관계없이 해당 객체를 가리 킵니다. 그러나 C ++ 17 이후로이 문장은 제거되었습니다 …

2
C ++ 0x에서 nullptr을 삭제하는 것이 여전히 안전합니까?
에서 c++03이 널 포인터를 삭제하면 아무 효과가 없습니다 꽤 분명하다. 실제로 다음과 같이 명시 적으로 명시되어 있습니다 §5.3.5/2. 어느 쪽이든 delete 피연산자의 값이 널 포인터이면 연산이 영향을 미치지 않습니다. 그러나, 현재의 초안 에 대한 c++0x이 문장 누락 된 것으로 보인다. 나머지 초안에서는 delete-expression 의 피연산자가 널 포인터 상수가 아닌 경우 …

6
`new int;`의`new`는 연산자로 간주됩니까?
new int;in과 같은 표현식 int * x = new int;은 새로운 표현식 입니다. "new operator"라는 용어는 "new expression"과 같은 의미로 사용되는 것 같습니다. 예를 들어이 질문 에서 'new operator'와 'operator new'의 차이점은 무엇입니까? 키워드가 new새 표현식에 사용 된 가 연산자 습니까? 그 이유는 무엇? 그렇지 않은 경우 새 표현식 "새 …


2
구조화 된 바인딩으로 std :: ignore?
전주곡: std::tuple<int, int, int> f(); std::tuple<int, int, float, int> g(); C ++ 1z는 구조화 된 바인딩에 대한 구문을 도입하여 int a, b, c; std::tie(a, b, c) = f(); 뭔가 auto [a, b, c] = f(); 그러나 특정 구성 요소를 무시 std::tie하도록 지정할 수도 있습니다 std::ignore. 예 : std::tie(a, b, std::ignore, …

9
실행되지 않는 코드가 정의되지 않은 동작을 호출 할 수 있습니까?
정의되지 않은 동작 (이 예에서는 0으로 나누기)을 호출하는 코드는 실행되지 않습니다. 프로그램이 여전히 정의되지 않은 동작입니까? int main(void) { int i; if(0) { i = 1/0; } return 0; } 여전히 정의되지 않은 행동이라고 생각하지만 표준에서 나를지지하거나 거부 할 증거를 찾을 수 없습니다. 그래서, 어떤 아이디어?

4
이 구조는 어떻게 sizeof == 0을 가질 수 있습니까?
를 sizeof반환 할 구성을 요청하는 오래된 게시물이 있습니다 0. 표준에 따라 어떤 유형이나 변수도 0의 크기를 가질 수 없다는 높은 평판 사용자의 높은 점수 답변이 있습니다. 그리고 저는 그것에 100 % 동의합니다. 그러나이 솔루션을 제시하는 새로운 답변 이 있습니다. struct ZeroMemory { int *a[0]; }; 나는 막 반대표를 던지고 댓글을 …

4
다른 컴파일러에 의해 호출되는 다른 캐스트 연산자
다음의 짧은 C ++ 프로그램을 고려하십시오. #include <iostream> class B { public: operator bool() const { return false; } }; class B2 : public B { public: operator int() { return 5; } }; int main() { B2 b; std::cout << std::boolalpha << (bool)b << std::endl; } 다른 컴파일러에서 컴파일하면 …

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