«c++» 태그된 질문

C ++는 범용 프로그래밍 언어입니다. 원래 C에 대한 확장으로 설계되었으며 유사한 구문을 갖지만 이제는 완전히 다른 언어입니다. C ++ 컴파일러로 컴파일 된 코드에 대한 질문에이 태그를 사용하십시오. 특정 표준 개정 [C ++ 11], [C ++ 14], [C ++ 17] 또는 [C ++ 20] 등과 관련된 질문에 버전 별 태그를 사용하십시오.

1
수명이 종료 된 객체의 멤버 함수 코 루틴을 재개하는 것이 UB입니까?
이 질문은이 의견에서 비롯됩니다 : C ++ 20 코 루틴에 대한 Lambda 수명 설명 이 예와 관련하여 : auto foo() -> folly::coro::Task<int> { auto task = []() -> folly::coro::Task<int> { co_return 1; }(); return task; } 따라서 반환 된 코 루틴을 실행하면 fooUB가 발생 하는지 여부가 문제입니다 . "객체의 수명이 …

1
지정되지 않은 암시 적 객체 생성
때문에 낮은 수준의 객체 조작을 위해 객체 P0593 내재적으로 작성이 허용 된 오브젝트가 작성 될 수있다 내재적 20 ++ C이다. 특히 제안에 의해 도입 된 문구 (예 : 특정 작업 할 수 있습니다 std::malloc자동으로이) 특정 유형의 객체의 수명, 소위 만들고 시작 암시 평생 유형을 , 경우 같은 오브젝트의 도입이 가지고 …

2
Foo <T> :: Foo (T &&) 호출에서 C ++가 T를 추론 할 수없는 이유는 무엇입니까?
다음과 같은 템플릿 구조가 주어집니다. template&lt;typename T&gt; struct Foo { Foo(T&amp;&amp;) {} }; 이것은 컴파일되고 다음과 T같이 추론됩니다 int. auto f = Foo(2); 그러나 이것은 컴파일되지 않습니다 : https://godbolt.org/z/hAA9TE int x = 2; auto f = Foo(x); /* &lt;source&gt;:12:15: error: no viable constructor or deduction guide for deduction of template …

2
C의 const 한정자와 C ++의 const 한정자는 어떻게 다릅니 까?
사용자 R 의 의견 을 찾았습니다 . : C와 C ++는 같은 언어가 아닙니다. 특히 C const는 C ++과 관련이 없습니다 const. constC의 const한정자와 C ++ 의 한정자의 차이점은 기본 연결 이라는 것을 알고 있습니다. constC ++에서 한정자를 사용 하여 네임 스페이스 범위에서 선언 된 객체 에는 내부 연결이 있고 …

2
스레드 안전 규칙에서 제안한 비 const 인수로 생성자를 복사 하시겠습니까?
레거시 코드에 래퍼가 있습니다. class A{ L* impl_; // the legacy object has to be in the heap, could be also unique_ptr A(A const&amp;) = delete; L* duplicate(){L* ret; legacy_duplicate(impl_, &amp;L); return ret;} ... // proper resource management here }; 이 레거시 코드에서 객체를 "중복"하는 함수는 스레드로부터 안전하지 않으므로 (같은 …


2
프로그래머 수준에서 C ++ std :: atomic으로 보장되는 것은 무엇입니까?
에 대한 여러 기사, 대화 및 스택 오버플로 질문을 듣고 읽었으며 std::atomic그것을 잘 이해하고 싶습니다. MESI (또는 파생) 캐시 일관성 프로토콜, 버퍼 저장, 대기열 무효화 등의 가능한 지연으로 인해 캐시 라인 쓰기 가시성과 약간 혼동되기 때문에. x86은 더 강력한 메모리 모델을 가지고 있으며 캐시 무효화가 지연되면 x86이 시작된 작업을 되돌릴 …


1
다른 컴파일러에서 void **로 변환
다른 컴파일러를 통해 다음 코드를 실행했습니다. int main() { float **a; void **b; b = a; } 내가 수집 할 수 있었던 것은 일반적인 포인터 void **가 아니기 때문에 다른 포인터에서 변환 할 때 컴파일하거나 적어도 경고를 보내서는 안됩니다. 그러나 내 결과는 다음과 같습니다 (모두 Windows에서 수행됨). gcc- 예상대로 경고를 …
9 c++  c  cuda 

1
함수 포인터 배열에서 함수 인수를 템플릿 인수로 전달
함수 포인터 배열에서 함수 인수를 템플릿 인수로 전달하고 싶습니다. Intellisense에서 무언가 잘못되었다고 불평하지만 내 코드는 MSVC를 사용하여 컴파일하는 것 같습니다. gcc와 clang은 모두 코드를 컴파일하지 못합니다. 다음 예제를 고려하십시오. static void test() {} using FunctionPointer = void(*)(); static constexpr FunctionPointer functions[] = { test }; template &lt;FunctionPointer function&gt; static void …
9 c++  templates  c++14 

1
C ++ 20에서 shift_right ()는 어떻게 구현됩니까?
C ++ 20에서 &lt;algorithm&gt;헤더는 두 개의 새로운 알고리즘을 얻는다 : shift_left()와shift_right() . 둘 다 LegacyForwardIterator를 허용합니다. 에 대해 shift_left(), "이동은 i시작부터 시작 하여 증가하는 순서로 수행됩니다 ​0"; 에 대해 shift_right()" ForwardItLegacyBidirectionalIterator 요구 사항을 충족하는 경우 이동은 i시작 순서에서 내림차순으로 수행됩니다 last - first - n - 1"로 지정됩니다. 구현하기 위해 …


1
클래스 전문화에 clang / gcc 불일치
전문하는 동안 나는이 문제를 건너 온 tuple_size/ tuple_element구조 바인딩 (17) C ++에서 사용자 정의 클래스. 아래 코드는 GCC에서는 컴파일되지만 clang에서는 컴파일되지 않습니다 (두 트렁크 버전 모두 아래 링크 참조). #include &lt;type_traits&gt; template&lt;typename T, typename... Ts&gt; using sfinae_t = T; template&lt;typename T, bool... Bs&gt; using sfinae_v_t = sfinae_t&lt;T, typename std::enable_if&lt;Bs&gt;::type...&gt;; template …


2
유형 punning 테마의 변형 : 적절한 사소한 구성
나는 이것이 매우 일반적인 주제라는 것을 알고 있지만 일반적인 UB를 쉽게 찾을 수있는 한 지금 까지이 변형을 찾지 못했습니다. 따라서 실제 데이터 사본을 피하면서 Pixel 객체를 공식적으로 소개하려고합니다. 이것이 유효합니까? struct Pixel { uint8_t red; uint8_t green; uint8_t blue; uint8_t alpha; }; static_assert(std::is_trivial_v&lt;Pixel&gt;); Pixel* promote(std::byte* data, std::size_t count) { Pixel …

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