Updated:

less than 1 minute read

개요

  • 범위의 요소를 포함하는 메모리 블록에 대한 포인터를 반환


예제

  • 코드
     #include <cstring>
     #include <iostream>
     #include <string>
     #include <string_view>
     #include <vector>
        
     using namespace std;
        
     template <typename T> constexpr string_view type_name() {
     	const string s = __PRETTY_FUNCTION__;
     	const int prefixSize = s.find("[with T = ") + strlen("[with T = ");
        
     	return string_view(s.data() + prefixSize, s.find(';') - prefixSize);
     }
        
     int main() {
     	int i[]{1, 2, 3};
     	cout << type_name<decltype(i)>() << endl;
     	cout << type_name<decltype(data(i))>() << endl;
        
     	cout << "------ 1" << endl;
        
     	string s{"abc"};
     	cout << type_name<decltype(s)>() << endl;
     	cout << type_name<decltype(data(s))>() << endl;
        
     	cout << "------ 2" << endl;
        
     	vector<int> v{1, 2, 3};
     	cout << type_name<decltype(v)>() << endl;
     	cout << type_name<decltype(data(v))>() << endl;
        
     	return 0;
     }
    
  • 실행 결과
     int [3]
     int*
     ------ 1
     std::__cxx11::basic_string<char>
     char*
     ------ 2
     std::vector<int>
     int*