«c++» 태그된 질문

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

3
함수에서 고유 한 void 포인터 반환
void *CI에서 함수 를 얻으려면 다음과 같이하십시오 (매우 기본적인 예). void *get_ptr(size_t size) { void *ptr = malloc(size); return ptr; } 사용할 때 어떻게 같은 결과를 얻을 수 std::unique_ptr<>있습니까?
11 c++  c  unique-ptr 

1
동일한 문자열과 접미사를 순차적으로 제거하는 효율적인 문자열 잘림 알고리즘
테스트 당 시간 제한 : 5 초 테스트 당 메모리 제한 : 512MB 당신은 문자열을 주어진 s길이 n( n≤ 5000). 이 문자열의 접두사 인 적절한 접두사를 선택하고 선택한 접두사 또는 해당 접미사를 제거 할 수 있습니다. 그런 다음 결과 문자열 등에 유사한 작업을 적용 할 수 있습니다. 그러한 일련의 연산을 …

1
gcc의 is_nothrow_constructible 구현에 static_cast가 필요한 이유는 무엇입니까?
GCC 구현에서 가져온 type_traits이유는 static_cast무엇입니까? template <typename _Tp, typename... _Args> struct __is_nt_constructible_impl : public integral_constant<bool, noexcept(_Tp(declval<_Args>()...))> {}; template <typename _Tp, typename _Arg> struct __is_nt_constructible_impl<_Tp, _Arg> : public integral_constant<bool, // Why is `static_cast` needed here? noexcept(static_cast<_Tp>(declval<_Arg>()))> {};

3
컴파일러가 생성 한 함수를 찾는 방법은 무엇입니까?
컴파일러 생성 함수, 3의 규칙 및 5의 규칙에 대해 알고 있습니다. 실제 시나리오에서는 컴파일러가 실제로 생성 한 컴파일러 생성 함수 (생성자, 할당 연산자, 소멸자)를 정확히 파악하는 것이 쉽지 않을 수 있습니다. 특정 클래스에 대해 컴파일러 생성 함수를 나열하는 방법이 있습니까? 나는 주로 Visual Studio 2019 및 Xcode에 관심이 있지만 일반적인 …
11 c++  c++11 

1
규정되지 않은 sort () — std :: array가 아닌 std :: vector에서 사용될 때 컴파일되는 이유는 무엇입니까?
호출 할 때 std::sort()A의 std::array: #include <vector> #include <array> #include <algorithm> int main() { std::vector<int> foo{4, 1, 2, 3}; sort(begin(foo), end(foo)); std::array<int, 4> foo2{4, 1, 2, 3}; sort(begin(foo2), end(foo2)); } GCC와 그 소리 복귀상의 종류에 오류가 두 std::array- 그 소리가 말한다 오류 : 선언되지 않은 식별자 '정렬'사용; 'std :: sort'를 …
11 c++  c++17 

2
C ++ 가짜 복사 작업을 찾는 방법은 무엇입니까?
최근에 나는 다음을 가졌다 struct data { std::vector<int> V; }; data get_vector(int n) { std::vector<int> V(n,0); return {V}; } 이 코드의 문제점은 구조체가 생성 될 때 복사가 발생하고 솔루션이 대신 {std :: move (V)} return 을 작성한다는 것입니다. 그러한 가짜 복사 작업을 감지하는 린터 또는 코드 분석기가 있습니까? cppcheck, cpplint …

2
`std :: declval <T>`에서 사용하기 위해 T는 완전한 타입이어야합니까?
이 예제를 고려하십시오 ( here ). #include &lt;type_traits&gt; #include &lt;iostream&gt; template &lt;typename U&gt; struct A { }; struct B { template &lt;typename F = int&gt; A&lt;F&gt; f() { return A&lt;F&gt;{}; } using default_return_type = decltype(std::declval&lt;B&gt;().f()); }; int main() { B::default_return_type x{}; std::cout &lt;&lt; std::is_same&lt; B::default_return_type, A&lt;int&gt;&gt;::value; } 그것은 gcc9.2에 오류없이 …


1
C ++ 17에서 초기화 후 인라인 변수를 변경할 수 있습니까?
내 시나리오는 다음과 같습니다 (clang에서는 작동하지만 gcc에서는 작동하지 않음) liba.hpp : inline int MY_GLOBAL = 0; libother.cpp : (dll) #include "myliba.hpp" void myFunc() { // MYGLOBAL = 28; } someexe.cpp : RunAppThatUsesBothLibAandLibOther(); 문제는 인라인 변수가 런타임에 과도하게 수정되어 28을 예상 한 위치에서 0을 표시한다는 것입니다. MSVC는 이에 동의하지 않지만 clang은 …
11 c++  visual-c++  dll  clang  c++17 

1
std :: function const 정확성
다음과 같이 호출 가능한 유형이 있다고 가정하십시오. struct mutable_callable { int my_mutable = 0; int operator()() { // Not const return my_mutable++; } }; 참고 mutable_callable비 const가이 operator()수정 멤버 변수 것을 ..... 이제 std::function내 유형을 벗어난 것으로 가정하십시오 . std::function&lt;int()&gt; foo = mutable_callable{}; 이제 나는 이것을 할 수 있습니다 : …

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



5
람다의 C ++ 삼항 할당
다음 스 니펫이 컴파일되지 않는 이유는 무엇입니까? "오류 : 피연산자? : 다른 유형이 있습니다"라는 오류가 표시됩니다. auto lambda1 = [&amp;](T&amp; arg) { ... }; auto lambda2 = [&amp;](T&amp; arg) { ... }; auto lambda = condition ? lambda1 : lambda2;

6
루프가 작동하지 않는 무고한 범위
다음은 컴파일 되지 않습니다 . #include &lt;iostream&gt; int main() { int a{},b{},c{},d{}; for (auto&amp; s : {a, b, c, d}) { s = 1; } std::cout &lt;&lt; a &lt;&lt; std::endl; return 0; } Godbolt에서 사용해보십시오 컴파일러 오류는 다음과 같습니다 error: assignment of read-only reference 's' 이제 실제 경우에는 목록이 클래스의 …

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