«c++» 태그된 질문

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

1
Linux 패키지 관리자는 C ++ 20 모듈을 어떻게 처리합니까?
우리는 지금 2020 년에 있으며 오랫동안 기다려온 C ++ 모듈 기능과 함께 C ++ 20이 나옵니다. 그러나 CppCon에 대한 몇 가지 이야기를 본 후 C ++ 모듈이 이상한 장소에 있다는 것을 알았습니다. 특히 Linux 패키지 관리자 (pacman, apt, emerge 등)에게는 내가 배운 것에서 C ++ 모듈은 컴파일러에 따라 다름 Clang에서 …

1
비공개 유형의 공개 별명
그것이 유효한 C ++인지 궁금합니다. class Test { struct PrivateInner { PrivateInner(std::string const &str) { std::cout << str << "\n"; } }; public: using PublicInner = PrivateInner; }; //Test::PrivateInner priv("Hello world"); // Ok, private so we can't use that Test::PublicInner publ("Hello World"); // ?, by using public alias we can …


2
개념을 함수에 전달
개념은 컴파일 타임 술어로 정의되므로 실제로 컴파일 타임 알고리즘에 이러한 술어를 재사용 할 수 있습니까? 예를 들어 튜플의 모든 유형이 개념을 준수하는지 확인할 수 있습니까? 내가 본 한, 어떤 식 으로든 개념을 함수에 전달하는 것은 불가능합니다.이 경우 이러한 경우에 템플릿을 사용하게됩니다. #include <type_traits> template<typename T> concept FloatLike = std::is_same_v<T, float>; …

5
주문 번호의 효율적이고 안정적인 합계
부동 소수점 양수 ( std::vector<float>, size ~ 1000)의 목록이 꽤 있습니다. 숫자는 내림차순으로 정렬됩니다. 내가 순서대로 합하면 : for (auto v : vec) { sum += v; } 나는 벡터의 끝 부분에 가까운 이후 나는 약간의 수치 안정성에 문제가있을 수 있습니다 생각 sum보다 훨씬 클 것이다 v. 가장 쉬운 해결책은 …

2
원자 벡터의 초기화
치다: void foo() { std::vector<std::atomic<int>> foo(10); ... } foo의 내용이 이제 유효합니까? 아니면 명시 적으로 반복하고 초기화해야합니까? 나는 Godbolt를 확인했는데 괜찮아 보이지만이 시점에서 표준이 매우 혼란스러워 보입니다. 표준 : : 벡터 생성자는 삽입 말한다 기본 삽입 의 인스턴스 std::atomic<int>이며, 초기화 값 배치를 통해를 new. 가치 초기화의이 효과가 적용된다고 생각합니다. 2) …
12 c++  vector  atomic 




4
부울이 아닌 반환 값과 동등 비교를 오버로드 할 때 C ++ 20의 변경 사항 또는 clang-trunk / gcc-trunk의 회귀가 변경됩니까?
다음 코드는 c ++ 17 모드에서 clang-trunk로 잘 컴파일되지만 c ++ 2a (다가오는 c ++ 20) 모드에서 중단됩니다. // Meta struct describing the result of a comparison struct Meta {}; struct Foo { Meta operator==(const Foo&) {return Meta{};} Meta operator!=(const Foo&) {return Meta{};} }; int main() { Meta res = …

3
C ++에서 std :: resize (n)과 std :: shrink_to_fit의 차이점은 무엇입니까?
나는이 진술들을 보았습니다. resize(n)– 'n'요소를 포함하도록 컨테이너의 크기를 조정합니다. shrink_to_fit()– 크기에 맞게 컨테이너 용량을 줄이고 용량을 초과하는 모든 요소를 ​​파괴합니다. 이 기능들 사이에 중요한 차이점이 있습니까? 그들은 C ++에서 벡터 아래에옵니다.

1
`string.assign (string.data (), 5)`는 잘 정의되어 있습니까 아니면 UB입니까?
동료가 이것을 작성하고 싶었습니다. std::string_view strip_whitespace(std::string_view sv); std::string line = "hello "; line = strip_whitespace(line); 나는 돌아 오는 string_view것이 나에게 선험적으로 불편 하다고 말했고 , 더 나아가 여기의 앨리어싱은 UB처럼 보였다. 나는 line = strip_whitespace(line)이 경우에 해당 한다고 확신 할 수있다 line = std::string_view(line.data(), 5). 나는 전화 할 생각 string::operator=(const …

1
std :: vector를 만드는 현대적인 접근 방식으로 정렬 된 메모리 할당
다음과 같은 질문은 답변이 오래된 그러나, 관련 및 사용자의 코멘트 마크 Glisse은 충분히 논의되지 않을 수 있습니다이 문제에 대한 17 ++ C 이후 새로운 접근 방식이 있습니다 제안합니다. SIMD에 대해 정렬 된 메모리가 올바르게 작동하면서 여전히 모든 데이터에 액세스하려고합니다. Intel에서 유형의 float 벡터를 만들고 __m256크기를 8 배 줄이면 정렬 된 …

1
GCC의 앵글 브래킷 구현에는 다음이 포함됩니다. 아래 설명 된 이유는 무엇입니까?
2.6 계산 포함 섹션 의이 문서 는 다음 단락으로 구성되어 있습니다. 행이 <토큰으로 시작하고> 토큰을 포함하는 토큰 스트림으로 확장되면 <와 첫 번째> 사이의 토큰이 결합되어 포함 할 파일 이름을 형성합니다. 토큰 사이의 공백은 단일 공백으로 줄어 듭니다. 초기 <뒤의 공백은 유지되지만 닫힘 앞의 후행 공백은 무시 됩니다. CPP는 꺾쇠 괄호 …
11 c++  c  gcc  language-lawyer 

1
constexpr 생성자에서 배열을 초기화하는 것이 합법적입니까?
다음 코드는 합법입니까? template <int N> class foo { public: constexpr foo() { for (int i = 0; i < N; ++i) { v_[i] = i; } } private: int v_[N]; }; constexpr foo<5> bar; Clang은 수락하지만 GCC 및 MSVC는 거부합니다. GCC의 오류는 다음과 같습니다 main.cpp:15:18: error: 'constexpr foo<N>::foo() [with …

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