«c++» 태그된 질문

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

2
람다에서 static_assert가있는 constexpr이 올바른 컴파일러는 무엇입니까?
static_assert에서 를 사용하려면 if constexpr일부 템플릿 매개 변수에 따라 조건을 만들어야합니다. 흥미롭게도 코드가 람다로 싸여 있으면 gcc와 clang이 동의하지 않습니다. 다음 코드는 gcc로 컴파일되지만 clang은 if constexprtrue 일 수 없더라도 assert를 트리거 합니다. #include <utility> template<typename T> constexpr std::false_type False; template<typename T> void foo() { auto f = [](auto x) …

1
MSVC의 가능한 컴파일러 버그
다음 코드는 gcc 및 clang (및 기타 여러 C ++ 11 컴파일러)으로 컴파일됩니다. #include <stdint.h> typedef int datatype; template <typename T> struct to_datatype {}; template <> struct to_datatype<int16_t> { static constexpr datatype value = 1; }; template <typename T> class data { public: data(datatype dt = to_datatype<T>::value) {} }; int …
13 c++  c++11  visual-c++ 

1
컨테이너에 32 개 이상의 요소가있는 경우에만 std :: sort가 스왑을 호출하는 이유는 무엇입니까?
안녕하세요, 간단한 질문이 있습니다. class A { public: A(int); A(const A&); A& operator=(const A&); ~A(); private: int* ptr_; friend bool operator<(const A&, const A&); friend void swap(A&, A&); }; A::A(int x) : ptr_(new int(x)) {} A::A(const A& rhs) : ptr_(rhs.ptr_ ? new int(*rhs.ptr_) : nullptr) {} A& A::operator = (const …
13 c++  std  swap 

2
포함 할 헤더 파일을 결정하는 방법은 무엇입니까?
아래 (매우 간단한) 코드가 있다고 가정 해보십시오. #include <iostream> int main() { std::cout << std::stoi("12"); } 이것은 g ++와 clang에서 잘 컴파일됩니다. 그러나 다음 오류와 함께 MSVC에서 컴파일에 실패합니다. 오류 C2039 : 'stoi': 'std'의 구성원이 아닙니다 오류 C3861 : 'stoi': 식별자를 찾을 수 없습니다 나는 그것이 헤더의 std::stoi일부 라는 것을 …
13 c++ 

1
C ++에서 버전간에 표현식 유형이 변경된 이유는 무엇입니까?
C ++ 초안을 이해하기가 어려워서 C ++ 초안을 소화하기가 매우 어려워 다른 리소스를 선호하기 때문에 표현 유형 을 이해하려고 합니다. C ++ 버전 간의 표현 및 정의가 크게 변경되었습니다. 다음에서는 다음과 같은 초안을 참조합니다. C ++ 11 [ n3690 ] (최종 초안) C ++ 17 [ n4659 ] (최종 초안) …
13 c++  c++11  c++14  c++17  c++20 

1
gcc의 모호한 연산자
일부 stl 컨테이너를 인쇄하기위한 함수 템플릿을 만들었습니다. #include <iostream> #include <vector> #include <string> template <template <typename, typename> class C, typename T, typename A> std::ostream& operator<<(std::ostream& os, const C<T, A>& container) { for (auto& elem : container) { os << elem << " "; } return os; } int main() { …
13 c++  c++17 


1
다른 블록에서 동일한 명명 된 extern 로컬 변수가 C ++에서 컴파일러간에 다른 연결을 얻는 이유는 무엇입니까?
extern 로컬 변수에 부여되는 연결을 확인하는 동안 컴파일러간에 다른 동작이 있음을 발견했습니다. 예를 들어 주석 변수에서 볼 수 있듯이 아래 코드 를 테스트 하면 var서로 다른 연결이 있습니다. // foo.cpp int var = 10; // external linkage // main.cpp #include <iostream> static int var = 100; // internal linkage int …
12 c++  g++  clang++  extern  linkage 

1
`equality_comparable_with`에는`common_reference`가 필요합니까?
개념equality_­comparable_with<T, U> 유형의 객체 선언하고자 T하고 U서로 동일하게 비교 될 수 있으며,이 경우,이 예상 된 의미를 갖는다. 괜찮아. 그러나이 개념도 common_reference_t<T&, U&>존재 해야 합니다. 주요 자극 common_reference과 그 기능은 프록시 반복자 를 가능하게reference 하고 value_type그러한 반복자 와 의 관계를 나타내는 장소를 갖는 것 같습니다 . 훌륭하지만 ... a T와 a …

1
기본 static_vector 구현에서 정의되지 않은 동작
tl; dr : 내 static_vector에 정의되지 않은 동작이 있다고 생각하지만 찾을 수 없습니다. 이 문제는 Microsoft Visual C ++ 17에서 발생합니다.이 간단하고 완료되지 않은 static_vector 구현, 즉 스택 할당이 가능한 고정 용량을 가진 벡터가 있습니다. 이것은 std :: aligned_storage 및 std :: launder를 사용하는 C ++ 17 프로그램입니다. 문제와 관련이 …

2
컴파일 타임에`const char *`유형의 두 문자열을 연결할 수 있습니까?
분명히 constexpr함수 에서 두 개의 문자열 리터럴을 연결할 수 있지만 constexpr아래 코드와 같이 다른 함수에서 반환 된 문자열과 문자열 리터럴을 연결하는 것은 어떻습니까? template <class T> constexpr const char * get_arithmetic_size() { switch (sizeof(T)) { case 1: return "1"; case 2: return "2"; case 4: return "4"; case 8: return …
12 c++  c++17 

1
템플릿 클래스에서 C ++ 20 클래스 외부 정의
C ++의 C ++ 20 표준까지 템플릿 클래스의 개인 멤버를 사용하는 클래스 외 연산자를 정의하려면 다음과 유사한 구문을 사용합니다. template <typename T> class Foo; template <typename T> constexpr bool operator==(T lhs, const Foo<T>& rhs); template <typename T> class Foo { public: constexpr Foo(T k) : mK(k) {} constexpr friend bool …
12 c++  templates  c++20 

1
캡처 할 수없는 람다는 표준에 따라 비어 있습니까?
템플릿 함수에서 다른 람다에서 빈 (캡처가없는) 람다를 식별하는 방법을 찾고 있습니다. 나는 현재 C ++ 17을 사용하고 있지만 C ++ 20 답변도 궁금합니다. 내 코드는 다음과 같습니다 template<typename T> auto func(T lambda) { // The aguments of the lambdas are unknown if constexpr (/* is captureless */) { // do …
12 c++  lambda  c++17  c++20 


2
왜 열거 형 변수가 rvalue입니까?
예: typedef enum Color { RED, GREEN, BLUE } Color; void func(unsigned int& num) { num++; } int main() { Color clr = RED; func(clr); return 0; } 이것을 컴파일 할 때 다음과 같은 오류가 발생합니다. <source>: In function 'int main()': <source>:16:9: error: cannot bind non-const lvalue reference of type …

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