«c++20» 태그된 질문

C ++ 20은 C ++ 17 이후 C ++ 버전의 대상입니다. 이 태그는 C ++ 20 트랙의 C ++ 기능에 대한 질문에 C ++ 태그와 함께 사용해야합니다.

2
모듈 인터페이스에서 인라인 의미
헤더 파일을 고려하십시오. class T { private: int const ID; public: explicit T(int const ID_) noexcept : ID(ID_) {} int GetID() const noexcept { return ID; } }; 또는 대안 적으로 : class T { private: int const ID; public: explicit T(int const ID_) noexcept; int GetID() const noexcept; }; …

3
C ++ 20 개념 : 템플릿 인수가 여러 개념에 적합한 경우 어떤 템플릿 전문화가 선택됩니까?
주어진 : #include <concepts> #include <iostream> template<class T> struct wrapper; template<std::signed_integral T> struct wrapper<T> { wrapper() = default; void print() { std::cout << "signed_integral" << std::endl; } }; template<std::integral T> struct wrapper<T> { wrapper() = default; void print() { std::cout << "integral" << std::endl; } }; int main() { wrapper<int> …

1
함수 매개 변수의 템플리트 인수 자리 표시자인 'auto'
C ++ 20에서는 auto함수 매개 변수 유형을 사용할 수 있습니다 . 또한 사용 수 있습니까 auto템플릿 인수 자리 표시 자 (유사하지 만의 정신에서 C ++ 17 템플릿 <자동> 방식) 함수의 매개 변수 유형을 검색 하시나요? 따라서 C ++ 20 이전 코드는 다음과 같습니다. template<typename First, typename Second> void printPair(const std::pair<First, …
22 c++  templates  auto  c++20 

1
자체 이니셜 라이저에서 변수 사용
C ++ 20 표준 초안의 [basic.scope.pdecl] / 1 은 다음과 같은 (비 규범 적) 예제를 주 ( 풀 요청 3580 의 병합 이전의 부분 인용 ,이 질문에 대한 답변 참조)에 있습니다. unsigned char x = x; [...] x는 자체 (결정되지 않은) 값으로 초기화됩니다. 이것이 실제로 C ++ 20에서 잘 정의 …

2
POD 유형이 사소한 표준 레이아웃 유형과 정확히 동일합니까?
C ++ 20에서는 POD의 개념이 더 이상 사용되지 않습니다. 사소하고 표준적인 레이아웃이라는 의미없는 복합적인 특성이기 때문입니다. 그러나 C ++ 20 드래프트에서 POD의 정의는 정확히 "사소하고 표준적인 레이아웃"이 아닙니다. 실제로는 다음과 같습니다. POD 클래스는 사소한 클래스 및 표준 레이아웃 클래스이며 비 -POD 클래스 (또는 그 배열) 유형의 비 정적 데이터 멤버가 …


2
same_as 개념이 유형 평등을 두 번 검사하는 이유는 무엇입니까?
https://en.cppreference.com/w/cpp/concepts/same_as 에서 same_as 개념의 가능한 구현을 살펴보면 이상한 일이 일어나고 있음을 알았습니다. namespace detail { template< class T, class U > concept SameHelper = std::is_same_v<T, U>; } template< class T, class U > concept same_as = detail::SameHelper<T, U> && detail::SameHelper<U, T>; 첫 번째 질문은 SameHelper개념이 왜 엉망인가? 두 번째 이유는 …
19 c++  c++20  concept 

4
연속 열거 형 C ++ 11
열거 형이 연속적 인 경우 C ++ 11을 확인하는 방법이 있습니까? 열거 형 값을 제공하지 않는 것이 유효합니다. C ++ 14, C ++ 17 또는 C ++ 20에 유형 특성과 같은 기능이 열거 형이 연속적인지 확인할 수 있습니까? 이것은 static_assert에서 사용됩니다. 작은 예는 다음과 같습니다. enum class Types_Discontinuous { A …
17 c++  c++11  c++14  c++17  c++20 

1
C ++ 표준이 파일을 처리하는 방식을 찾는 이유는 무엇입니까?
C ++는 streamoff형식을 사용하여 (파일) 스트림 내의 오프셋을 나타내며 [stream.types]에 다음과 같이 정의됩니다. using streamoff = implementation-defined ; type streamoff는 운영 체제에 가능한 최대 파일 크기를 나타내기에 충분한 크기의 서명 된 기본 정수 유형 중 하나와 동의어입니다. 287) 287) 일반적으로 길다. 이것은 long32 비트 너비 의을 사용하는 것과는 반대로 큰 …


2
[[no_unique_address]] 및 동일한 유형의 두 멤버 값
[[no_unique_address]]에서 놀고 있습니다 c++20. cppreference 의 예에서는 빈 유형 Empty과 유형이 있습니다.Z struct Empty {}; // empty class struct Z { char c; [[no_unique_address]] Empty e1, e2; }; 분명히,의 크기는 Z최소한이어야 2하기 때문에 종류의 e1와 e2동일합니다. 그러나, 나는 정말로 Zsize 를 갖고 싶다 1. 이것은 나에게 무엇을 포장에 대한 생각 …

1
consteval 함수가 정의되지 않은 동작을 허용하는 이유는 무엇입니까?
C ++에는 상수 표현식의 매우 깔끔한 속성이 있습니다. 평가에는 정의되지 않은 동작 ( 7.7.4.7 ) 이있을 수 없습니다 . 추상 기계의 규칙 ([intro.execution])에 따라 e의 평가가 다음 중 하나를 평가하지 않는 한, 표현식 e는 핵심 상수 표현식입니다. ... 이 문서의 [intro] ~ [cpp]에 지정된대로 정의되지 않은 동작을 갖는 연산 [참고 …

2
C ++ 20 이전에 std :: swap 표시된 constexpr이 아닌 이유는 무엇입니까?
C ++ 20, std::swapa가됩니다 constexpr기능. 나는 표준 라이브러리가 사물을 표시하는 데 실제로 언어보다 뒤떨어져 있음을 알고 constexpr있지만 2017 년 <algorithm>에는 다른 것들과 마찬가지로 거의 constexpr이었습니다. 그러나 std::swap그렇지 않았습니다. 나는 그 표시를 막는 이상한 언어 결함이 있다는 것을 모호하게 기억하지만 세부 사항은 잊어 버립니다. 누군가 간결하고 명확하게 설명 할 수 있습니까? …

2
std :: chrono :: years 스토리지는 실제로 최소 17 비트입니까?
에서 cppreference std::chrono::years (since C++20) duration</*signed integer type of at least 17 bits*/, std::ratio<31556952>> 사용하여 libc++, 그것의 밑줄 저장 보인다 std::chrono::yearsIS short서명 16 비트 . std::chrono::years( 30797 ) // yields 32767/01/01 std::chrono::years( 30797 ) + 365d // yields -32768/01/01 apparently UB cppreference 또는 다른 것에 오타가 있습니까? 예: #include <fmt/format.h> …
14 c++  chrono  c++20  libc++ 

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)) …

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