«c++» 태그된 질문

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

1
요소를 완벽하게 전달하여 std :: vector를 목록 초기화 할 수 있습니까?
std :: vector의 집계 목록 초기화는 이동 이 더 적합 할 때 복사 초기화를 수행 한다는 것을 알았습니다 . 동시에 여러 emplace_backs가 원하는 것을 수행합니다. 나는 템플릿 함수를 작성하는이 불완전한 해결책을 생각 해낼 수 있었다 init_emplace_vector. 그러나 명시 적이 지 않은 단일 값 생성자에 대해서만 최적입니다 . template <typename T, …

1
빈 기본 클래스가 멤버 변수 인 경우 빈 기본 최적화가 금지 된 이유는 무엇입니까?
빈 기본 최적화 가 훌륭합니다. 그러나 다음과 같은 제한 사항이 있습니다. 비어있는 기본 클래스 중 하나가 첫 번째 비 정적 데이터 멤버의 유형이거나 해당 유형 인 경우 비어있는 기본 최적화는 금지됩니다. 동일한 유형의 두 기본 서브 오브젝트는 오브젝트 표현 내에서 다른 주소를 가져야하기 때문입니다. 가장 많이 파생 된 유형의 이 …

1
스택 메모리를 사용하지 않을 때 왜 할당됩니까?
다음 예제를 고려하십시오. struct vector { int size() const; bool empty() const; }; bool vector::empty() const { return size() == 0; } 생성 된 어셈블리 코드 vector::empty(최적화와 함께 clang) : push rax call vector::size() const test eax, eax sete al pop rcx ret 왜 스택 공간을 할당합니까? 전혀 사용되지 않습니다. …

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
int를 던지고 잡는 것은 어떻게 작동합니까?
이 코드로 : int main() { try { throw -1; } catch (int& x) { std::cerr << "We caught an int exception with value: " << x << std::endl; } std::cout << "Continuing on our merry way." << std::endl; return 0; } 우리는 : /tmp$ ./prorgam.out Continuing on our merry …

1
constexpr 인 경우-왜 폐기 된 문이 완전히 검사됩니까?
GCC 10에서 c ++ 20 consteval을 어지럽히고이 코드를 작성했습니다. #include <optional> #include <tuple> #include <iostream> template <std::size_t N, typename Predicate, typename Tuple> consteval std::optional<std::size_t> find_if_impl(Predicate&& pred, Tuple&& t) noexcept { constexpr std::size_t I = std::tuple_size_v<std::decay_t<decltype(t)>> - N; if constexpr (N == 0u) { return std::nullopt; } else { return pred(std::get<I>(t)) …

1
std :: gcd의 버그입니까?
나는 std::gcd예기치 않은 것을 발견 한이 행동을 보았습니다 . #include <iostream> #include <numeric> int main() { int a = -120; unsigned b = 10; //both a and b are representable in type C using C = std::common_type<decltype(a), decltype(b)>::type; C ca = std::abs(a); C cb = b; std::cout << a << …

2
사소한 기본 생성자가 동작을 수행하지 않으면 malloc을 사용하여 사소한 구성 가능한 오브젝트를 작성할 수없는 이유는 무엇입니까?
사소한 기본 생성자에 대한 cppreference 에서 인용 한 다음 단락을 이해하는 데 어려움이 있습니다. 나는 stackoverflow를 검색했지만 여전히 명확한 대답을 얻지 못했습니다. 도와주세요. 간단한 기본 생성자는 동작을 수행하지 않는 생성자입니다. C 언어 (POD 유형)와 호환되는 모든 데이터 유형은 기본적으로 구성 가능합니다. 그러나 C와 달리 간단한 기본 생성자를 가진 객체는 std …


2
복사 및 이동 생성자가 자동 ​​친구입니까?
복사 또는 이동 생성자를 정의 할 때 다른 클래스의 개인 변수에 액세스 할 수 있습니다. C ++는 friend자동으로 서로 에게 연결합니까 ? 예를 들면 다음과 같습니다. my_str::my_str(my_str&& m) { size_ = m.size_; //accessing private variable another my_str class buff_ = m.buff_; //accessing private variable another my_str class m.buff_ = nullptr; …
14 c++  friend-class 

3
왜 배열의 차원이 그 유형의 일부입니까?
C ++ Primer 책을 읽는 동안 "어레이의 요소 수는 배열 유형의 일부입니다."라는 문장을 보았습니다. 그래서 다음 코드를 사용하여 찾고 싶었습니다. #include<iostream> int main() { char Array1[]{'H', 'e', 'l', 'p'}; char Array2[]{'P', 'l', 'e', 'a', 's', 'e'}; std::cout<<typeid(Array1).name()<<std::endl; //prints A4_c std::cout<<typeid(Array2).name()<<std::endl; //prints A6_c return 0; } 그리고 흥미롭게도 두 배열에서 typeid의 …
14 c++  arrays  c++11 


3
라인 외부 멤버 함수 정의에 필요한 정규화 된 클래스 이름이 전역 범위에 해당합니까?
이 질문은 클래스 외부 멤버 함수 정의에서 클래스 이름 (전역 범위 연산자 포함)을 정규화하는 것이 유용하고 필요한지 궁금합니다. 한편으로, 나는 이것을 전에 본 적이 없다. (그리고 올바르게 구문하는 것이 모호한 것처럼 보인다). 다른 한편으로, C ++ 이름 조회는 사소한 것이 아니기 때문에 코너 케이스가 존재할 수 있습니다. 질문: 에 의한 …

2
GCC9는 std :: variant의 값없는 상태를 피할 수 있습니까?
최근에 Reddit 토론을 따라 std::visit컴파일러 에서 최적화를 훌륭하게 비교했습니다 . 나는 다음을 발견했다 : https://godbolt.org/z/D2Q5ED GCC9와 Clang9 (모두 동일한 stdlib를 공유한다고 생각합니다)는 모든 유형이 특정 조건을 충족 할 때 가치없는 예외를 확인하고 던지는 코드를 생성하지 않습니다. 이것은 더 나은 codegen으로 이어 지므로 MSVC STL에 문제가 발생 했으며이 코드가 표시되었습니다. template …

2
객체가 필수인지 클래스 유형인지 아닌지 아는 요점은 무엇입니까?
안녕하세요 Cppreference.com에서 이와 같은 많은 예를 보았습니다. std::is_class<T> std::is_integral 등등. 내가 얻을 예를 들어 코드를 실행하면 알 수 true또는 false. 그러나 그 점은 무엇입니까? 예를 들어 객체가 클래스 유형인지 아는가? #include <iostream> #include <type_traits> struct A {}; class B {}; enum class C {}; int main() { std::cout << std::boolalpha; …
14 c++  templates 

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