나는 다음과 같은 한 템플릿 기능 :std :: initializer_list <int> ({1,2,3})과 {1,2,3}의 차이점은 무엇입니까?
template<typename T> void foo2(T t) {}
내가 사용하여 호출 할 수 있다는 사실을 알고 : 초기화 목록 템플릿 인수에 대한 비 유추 상황이
foo2({1,2,3});
때문이다. 나는 사용해야합니다 :
foo2<std::initializer_list<int>>({1,2,3});
을하지만, 또한 사용할 수 있습니다 {1,2,3}
및 std::initializer_list<int>({1,2,3})
:
foo2(std::initializer_list<int>({1,2,3}));
날의 차이점은 무엇입니까 궁금하게하는?
'std :: initializer_list ({1,2,3})'은'std :: initializer_list '형식의 표현식입니다. '{1,2,3}'은 표현이 아닙니다. 중괄호 목록은 표현식이 발생할 수있는 곳이 아닌 언어 정의가 명시 적으로 허용하는 컨텍스트에서만 발생할 수 있습니다. –
@ M.M 답이 0 인 질문에 대한 대답을 알았지 만 의견에 답을 얻은 것으로 밝혀졌습니다. (͡ ° ʖ̯ ͡ °) – luk32
@ luk32 답변을 쓰는 것이 자유롭게 ... 전체 대답은 내가 확신하지 않는 템플릿의 세부 사항을 다루어야한다고 생각합니다 –