«c++17» 태그된 질문

C ++ 17은 2017 년에 승인 된 C ++ 표준의 이름입니다. 이전 C ++ 14 표준을 기반으로하여 핵심 언어 및 표준 라이브러리를 개선하고 몇 가지 새로운 언어 기능을 추가합니다.

2
함수에서 remove_reference가 작동하지 않는 이유는 무엇입니까?
다른 날 템플릿 메타 프로그래밍을 할 때 이상한 일이 발생했습니다. 기본적 으로이 주장은 (내가 예상 한대로) 지나치지 않습니다. static_assert(std::is_same_v<void(), std::remove_reference_t<void()&>>); 처음에는 함수 참조를 정의하는 구문 오류가 있다고 생각했지만이 주장은 통과하여 그렇지 않습니다. static_assert(std::is_same_v<void()&, void()&>); 또한 remove_referencecppreference에서 소스를 복사하여 직접 구현하려고 시도했지만 작동하지 않았습니다. 무슨 일이야?
38 c++  templates  types  c++17 



1
클래스가 자체 정적 정적 constexpr 메소드에 액세스 할 수 없습니다-Clang bug?
이 코드는 Clang (6,7,8,9, 트렁크)에서 컴파일되지 않지만 GCC (7.1, 8.1, 9.1)에서는 잘 컴파일됩니다. template<class T> struct TypeHolder { using type = T; }; template<int i> class Outer { private: template<class T> static constexpr auto compute_type() { if constexpr (i == 42) { return TypeHolder<bool>{}; } else { return TypeHolder<T>{}; } …

3
이 전환 연산자의 과부하가 선택된 이유는 무엇입니까?
다음 코드를 고려하십시오 . struct any { template <typename T> operator T &&() const; template <typename T> operator T &() const; }; int main() { int a = any{}; } 여기서 두 번째 변환 연산자는 과부하 해상도에 의해 선택됩니다. 왜? 지금까지 내가 그것을 이해, 두 사업자에 추론된다 operator int &&() …

3
C ++에서 유형 목록의 직교 곱을 작성하는 방법은 무엇입니까?
자기 설명. 기본적으로 다음과 같이 유형 목록이 있다고 가정하십시오. using type_list_1 = type_list<int, somestructA>; using type_list_2 = type_list<somestructB>; using type_list_3 = type_list<double, short>; 가변 목록 유형일 수 있습니다. 직교 제품의 유형 목록을 얻으려면 어떻게합니까? result = type_list< type_list<int, somestructB, double>, type_list<int, somestructB, short>, type_list<somestructA, somestructB, double>, type_list<somestructA, somestructB, short> >; …

3
shared_ptr의 삭제 기는 커스텀 할당자가 할당 한 메모리에 저장되어 있습니까?
shared_ptr사용자 지정 할당 자 와 사용자 지정 삭제 기가 있다고 가정 해보십시오. 표준에서 삭제 프로그램을 저장할 위치에 대한 내용을 찾을 수 없습니다. 사용자 지정 할당자가 삭제 프로그램의 메모리에 사용될 것이라고 말하지 않으며 그렇지 않을 것이라고 말하지 않습니다 . 이것이 지정되지 않았습니까? 아니면 뭔가 빠졌습니까?

4
반환시 암시 적 변환은 허용되지 않습니다.
#include <optional> bool f() { std::optional<int> opt; return opt; } 컴파일하지 않습니다 : 'return': cannot convert from 'std::optional<int>' to 'bool' 컨설팅 참조 설명을 찾아야한다고 생각했지만 괜찮 았으므로 읽었습니다. 일부 유형 T1의 표현식이 해당 유형을 허용하지 않지만 다른 유형 T2를 허용하는 컨텍스트에서 사용될 때마다 내재적 변환이 수행됩니다. 특히: T2를 매개 변수로 …

3
주어진 std :: variant 유형을 주어진 기준으로 나눕니다.
지정된 변형 유형별 방법 using V = std::variant<bool, char, std::string, int, float, double, std::vector<int>>; 두 가지 변형 유형을 선언하십시오. using V1 = std::variant<bool, char, int, float, double>; using V2 = std::variant<std::string, std::vector<int>>; 여기서 V1모든 연산 종류를 포함 V하고 V2있는 모든 종류의 비 산술 포함 V? V 템플리트 클래스의 매개 변수 …
20 c++  c++17  std-variant 


4
std :: back_inserter와 함께 std :: transform을 사용하는 것이 유효합니까?
Cppreference에는 다음에 대한 예제 코드가 있습니다 std::transform. std::vector<std::size_t> ordinals; std::transform(s.begin(), s.end(), std::back_inserter(ordinals), [](unsigned char c) -> std::size_t { return c; }); 그러나 그것은 또한 말합니다 : std::transformunary_op또는의 순서대로 적용 할 수있는 것은 아닙니다 binary_op. 시퀀스에 순서대로 함수를 적용하거나 시퀀스의 요소를 수정하는 함수를 적용하려면을 사용하십시오 std::for_each. 이것은 아마도 병렬 구현을 허용하는 …

1
C ++ 14와 C ++ 17에서 std :: atomic 생성자가 다르게 동작하는 이유
C ++ 11로 프로젝트를 진행 중이며 다음 코드를 시도했습니다. #include <atomic> struct A { std::atomic_int idx = 1; }; int main() { return 0; } 컴파일러 오류가 발생합니다 error: use of deleted function 'std::__atomic_base<_IntTp>::__atomic_base(const std::__atomic_base<_IntTp>&) [with _ITp = int]' std::atomic_int idx = 1; ^ C ++ 14에서도 같은 결과가 나옵니다. …
19 c++  c++14  c++17  stdatomic 

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
전역 const char []를 constexpr string_view로 바꾸어야 할 문제가 있습니까?
우리 팀은 10 년 이상 된 C ++ 코드 기반으로 작업하고 있으며 최근에는 C ++ 17 컴파일러로 전환했습니다. 그래서 우리는 코드를 현대화하는 방법을 찾고 있습니다. YouTube에서 열린 컨퍼런스 토크에서 const char*전 세계 문자열을 로 바꾸 겠다는 제안을 들었습니다 constexpr string_view. 우리는 const char*코드에 많은 수의 전역 문자열 상수를 가지고 있기 …

1
std :: pair <auto, auto> 반환 유형
에서 놀고 auto있었습니다 std::pair. 아래 코드에서 함수 f는 std::pair템플릿 매개 변수에 따라 유형 중 하나를 반환해야합니다 . 실제 예 : 실시 예 1 template &lt;unsigned S&gt; auto f() { if constexpr (S == 1) return std::pair{1, 2}; // pair of ints else if constexpr (S == 2) return std::pair{1.0, 2.0}; …

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