«initializer-list» 태그된 질문

6
생성자 이니셜 라이저에서 멤버 배열 초기화
class C { public: C() : arr({1,2,3}) //doesn't compile {} /* C() : arr{1,2,3} //doesn't compile either {} */ private: int arr[3]; }; 그 이유는 배열이 =구문으로 만 초기화 될 수 있다는 것입니다. int arr[3] = {1,3,4}; 질문 내가 원하는 일을 어떻게 할 수 있습니까 (즉, 생성자에서 배열을 초기화 합니다 …


8
initializer_list 및 이동 의미 체계
요소를 외부로 이동할 수 std::initializer_list<T>있습니까? #include <initializer_list> #include <utility> template<typename T> void foo(std::initializer_list<T> list) { for (auto it = list.begin(); it != list.end(); ++it) { bar(std::move(*it)); // kosher? } } 때문에 std::intializer_list<T>특별한 컴파일러주의가 필요하며 C ++ 표준 라이브러리의 일반 컨테이너와 같은 값의 의미가없는, 내가 오히려 미안한 것보다 안전한 물어 것입니다.

6
std :: initializer_list가 기본 제공 언어가 아닌 이유는 무엇입니까?
std::initializer_list핵심 언어가 내장되어 있지 않은 이유는 무엇 입니까? C ++ 11의 매우 중요한 기능이지만 자체 예약 된 키워드 (또는 유사)가없는 것 같습니다. 대신, initializer_list그건 단지 특별한 암시가 표준 라이브러리에서 템플릿 클래스 매핑 새로운에서 보강-초기화리스트 {...} 컴파일러에 의해 처리하는 것 구문을. 처음에이 솔루션은 상당히 엉망 입니다. 이것이 C ++ 언어에 대한 …

5
이동 전용 유형의 벡터를 나열 초기화 할 수 있습니까?
GCC 4.7 스냅 샷을 통해 다음 코드를 전달하면 unique_ptrs를 벡터 에 복사하려고합니다 . #include <vector> #include <memory> int main() { using move_only = std::unique_ptr<int>; std::vector<move_only> v { move_only(), move_only(), move_only() }; } 분명히 std::unique_ptr복사 할 수 없기 때문에 작동 하지 않습니다. 오류 : 삭제 된 함수 'std :: unique_ptr <_Tp, …

3
중괄호로 묶인 이니셜 라이저는 언제 사용합니까?
C ++ 11에는 클래스 초기화를위한 새로운 구문이있어 변수를 초기화하는 방법에 대한 많은 가능성을 제공합니다. { // Example 1 int b(1); int a{1}; int c = 1; int d = {1}; } { // Example 2 std::complex<double> b(3,4); std::complex<double> a{3,4}; std::complex<double> c = {3,4}; auto d = std::complex<double>(3,4); auto e = …


3
하나의 함수 호출 C ++를 사용하여 여러 상수 클래스 멤버 초기화
동일한 함수 호출을 기반으로 초기화 해야하는 두 개의 다른 상수 멤버 변수가있는 경우 함수를 두 번 호출하지 않고이를 수행하는 방법이 있습니까? 예를 들어 분자와 분모가 일정한 분수 클래스입니다. int gcd(int a, int b); // Greatest Common Divisor class Fraction { public: // Lets say we want to initialize to a …

6
루프가 작동하지 않는 무고한 범위
다음은 컴파일 되지 않습니다 . #include <iostream> int main() { int a{},b{},c{},d{}; for (auto& s : {a, b, c, d}) { s = 1; } std::cout << a << std::endl; return 0; } Godbolt에서 사용해보십시오 컴파일러 오류는 다음과 같습니다 error: assignment of read-only reference 's' 이제 실제 경우에는 목록이 클래스의 …
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.