반응형
C ++ 11 : 가변 템플릿 함수 매개 변수의 수?
가변 템플릿 함수에 대한 인수 개수를 어떻게 구할 수 있습니까?
즉 :
template<typename... T>
void f(const T&... t)
{
int n = number_of_args(t);
...
}
number_of_args
위에서 구현하는 가장 좋은 방법은 무엇입니까 ?
다음과 같이 작성하십시오.
const std::size_t n = sizeof...(T); //you may use `constexpr` instead of `const`
주 n
와 같은 상수 표현식이 필요한 당신이 그것을 사용할 수 있습니다 수단 상수 표현 (즉, 컴파일 타임에 알려진)입니다 :
std::array<int, n> a; //array of n elements
std::array<int, 2*n> b; //array of (2*n) elements
auto middle = std::get<n/2>(tupleInstance);
패킹 된 유형의 집계 된 크기 ( 팩의 유형 수 와 반대)를 계산 하려면 다음과 같이해야합니다.
template<std::size_t ...>
struct add_all : std::integral_constant< std::size_t,0 > {};
template<std::size_t X, std::size_t ... Xs>
struct add_all<X,Xs...> :
std::integral_constant< std::size_t, X + add_all<Xs...>::value > {};
다음을 수행하십시오.
constexpr auto size = add_all< sizeof(T)... >::value;
C ++ 17 (이상)에서는 fold 표현식을 사용하여 유형의 크기 합계를 계산하는 것이 훨씬 더 간단 합니다.
constexpr auto size = (sizeof(T) + ...);
도움이되기를 바랍니다.
참고 URL : https://stackoverflow.com/questions/12024304/c11-number-of-variadic-template-function-parameters
반응형
'IT TIP' 카테고리의 다른 글
CSS 패딩이 요소의 크기를 증가시키는 이유는 무엇입니까? (0) | 2020.10.19 |
---|---|
색상의 유사성을 확인하는 알고리즘 (0) | 2020.10.19 |
package.json을 통해 "전역"npm 종속성 설치 (0) | 2020.10.19 |
pass-by-value 및 std :: move의 장점 (0) | 2020.10.19 |
ReactJS : 컴포넌트 초기 상태를 소품으로 전달하는 이유는 무엇입니까? (0) | 2020.10.19 |