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에서도 같은 결과가 나옵니다. C ++ 17로 전환하면 작동합니다 : 완드 박스
차이점에 대한 cppreference를 확인했습니다.
그러나 C ++ 14와 C ++ 17에는 차이점이 없습니다. 왜 C ++ 14가 아닌 C ++ 17에서 작동합니까?
어떤 컴파일러 / 표준 라이브러리 / 플랫폼을 사용하십니까?
—
빅터 구빈
@VictorGubin Linux (Wandbox)에서 Clang 및 GCC로 시도했습니다. 다른 버전을 시도했습니다.
—
Thomas Sablik
MCVE를 구조체 생성자 대신 로컬 인
—
피터 코르
main
(또는 모든 함수, 필요하지 않음)으로 단순화 할 수 있습니다 main
. 연타는 삭제 된 사용하려고하는 것이 더 명시되고, 유사한 오류 메시지를 제공 복사 : 대신 초기화 또는 일반 생성자의 생성자 godbolt.org/z/SBGf9w 의 libc와 ++
@PeterCordes이 오류가 클래스 초기화와 관련이 있는지 확실하지 않습니다.
—
Thomas Sablik
더 간단한 최소한의 재현 가능한 예제에 대해 동일한 오류 메시지를 얻는 것이 그렇지 않다는 것을 증명합니다. 시도하기 전까지는 확실하지 않았습니다.
—
Peter Cordes