중괄호로 둘러싸인 {1,2,3} 과 같은 데이터를 오버로딩된 함수에서 vector로 간주합니다.
글쓴이: awidesky / 작성시간: 토, 2021/01/16 - 4:05오후
제목이 난잡한데 코드로 하면 다음과 같습니다.
#include <iostream> #include <vector> using namespace std; void a(int a[] ){ cout << "b\n"; } void a(vector<int> v){ cout << "a\n"; } int main() { std::cout << "Hello World!\n"; int aa[] = {1,2,3}; vector<int> bb = {2,3,4}; a(aa); //b 출력 a((int[]){2,3,4}); //b 출력 a({5,6,7}); //a 출력 } <code/> a({5,6,7});와 같이 중괄호로 둘러싸인 값을 파라미터로 넣어주면 함수가 오버로딩된 순서에 상관없이 vector 타입으로 간주하는 것 같습니다. 컴파일러마다 다른 특성인지, 숨겨진 의미가 있는지, 제가 놓친 부분이 있는지 궁금합니다.
Forums:
c++11에서 추가된 Uniform
c++11에서 추가된 Uniform Initialization때문인 것 같네요..
한번 확인 해보시면 좋을 것 같습니다.
https://modoocode.com/286
댓글 달기