이 질문은 다음과 같이 변환될 수 있습니다. 초기화 목록을 통과할 수 있는 형식 매개변수 형식은 무엇입니까?
템플릿이 아닌 경우:
void foo(T), void foo(const T &), 초기화 목록을 복사하여 T를 초기화할 수 있는 경우. 즉, 초기화 T x = {...};가 합법적입니다. void foo(T), void foo(const T &),当T可以用初始化列表拷贝初始化时。即初始化T x = {...};合法。
template <class T, size_t N> void foo(const T (&)[N])
void foo(std::initializer_list<T>)
템플릿:🎜
🎜
🎜🎜템플릿 <class T> void foo(std::initializer_list<T>)🎜🎜
🎜🎜템플릿 <size_t N> void foo(const T (&)[N])🎜🎜
🎜🎜template <class T, size_t N> void foo(const T (&)[N]), 이는 C++17에서만 사용할 수 있다고 하지만 일부 컴파일러에서는 이미 지원합니다. . 🎜🎜
🎜
🎜코드 샘플(불가능한 몇 가지 일반적인 상황 포함) 🎜
🎜배열 멤버 변수 초기화: 초기화 목록에서 배열 멤버를 초기화하는 간단한 방법은 없는 것 같습니다. 생성자의 함수 본문 내에 값을 할당하는 것이 좋습니다. 하지만 템플릿을 사용하면 이를 달성할 수 있습니다. 🎜
으아악
std::vector<int>
,构造函数接受const std::vector<int> &arr
,拷贝用this->o = arr
사용을 권장합니다.이 질문은 다음과 같이 변환될 수 있습니다. 초기화 목록을 통과할 수 있는 형식 매개변수 형식은 무엇입니까?
템플릿이 아닌 경우:
void foo(T), void foo(const T &)
, 초기화 목록을 복사하여 T를 초기화할 수 있는 경우. 즉, 초기화T x = {...};
가 합법적입니다.void foo(T), void foo(const T &)
,当T可以用初始化列表拷贝初始化时。即初始化T x = {...};
合法。void foo(std::initializer_list<T>)
模板:
template <class T> void foo(std::initializer_list<T>)
template <size_t N> void foo(const T (&)[N])
template <class T, size_t N> void foo(const T (&)[N])
void foo(std::initializer_list<T>)
템플릿 <class T> void foo(std::initializer_list<T>)
🎜🎜 🎜🎜템플릿 <size_t N> void foo(const T (&)[N])
🎜🎜 🎜🎜template <class T, size_t N> void foo(const T (&)[N])
, 이는 C++17에서만 사용할 수 있다고 하지만 일부 컴파일러에서는 이미 지원합니다. . 🎜🎜 🎜 🎜코드 샘플(불가능한 몇 가지 일반적인 상황 포함) 🎜 🎜배열 멤버 변수 초기화: 초기화 목록에서 배열 멤버를 초기화하는 간단한 방법은 없는 것 같습니다. 생성자의 함수 본문 내에 값을 할당하는 것이 좋습니다. 하지만 템플릿을 사용하면 이를 달성할 수 있습니다. 🎜 으아악