저는 초기화 프로그램 목록을 처음 사용하고 있으며 다른 stl 컨테이너와 유사한 지 궁금합니다. 그 말은 그들이 가치를 복사하는 것을 의미합니까? 나는 함수를 호출 할 때std :: initializer_list <> 및 참조 매개 변수
template <class T> T& minArgs(const std::initializer_list<T&>& Arguments)
{
const T* Smallest = Arguments.begin();
for (const T* I = begin(Arguments); I != end(Arguments); ++I)
{
if (*I < *Smallest) Smallest = I;
}
return *Smallest;
}
그러나 나는 GCC에서이 얻을 : 내가 놀아 봤는데
error: 'const' qualifiers cannot be applied to 'int&'
을 난 할 노력하고있어이 같은 간단한 분() 함수는 이것은 initializer_lists가 내가 원하는 것을하지 않을 수도 있습니다; 나는 비 -POD 인수를 제외하고 함수를 원한다. va_list가 더 나은 대안이 될 것입니까?
감사합니다.
"* 그러나 함수를 호출 할 때 *"함수가 아닙니다. 그것은 템플릿입니다. 어떻게 인스턴스화합니까? –
죄송합니다. 언급하지 않았습니다. 다음과 같이 호출됩니다. int X = minArgs ({10, 20}); 또한 int & X 시도했지만 동일한 오류가 발생합니다. – user990683
std :: initializer_list는 모두 가치에 관한 것입니다. 또한 값으로 이동하여 이동되도록 (std :: initializer_list 리터럴은 정의에 따라 rvalue 참조) 의미가 있습니다. std :: initializer_list으로 가져 와서 어떻게되는지보십시오. –