중괄호로 둘러싸인 {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
댓글 달기