가변성 템플레이트의 매개 변수 팩에있는 항목 수를 알아야합니다.variadic 템플리트의 sizeof C++
내 코드 :
#include <iostream>
using namespace std;
template <int... Entries>
struct StaticArray
{
int size = sizeof... (Entries);// line A
//int array[size] = {Entries...};// line B
};
int main()
{
StaticArray<1,2,3,4> sa;
cout << sa.size << endl;
return 0;
}
나는 그것은 컴파일 할 수
static const unsigned short int size = sizeof...(Arguments)
에 선 A에
경우 변경이 줄을 컴파일 오류가 발생했습니다. 내 첫 번째 질문은 왜 "정적 const 부호없는 짧은"컴파일해야 얻을 수 있습니다. 보시다시피, 내 배열에 넣을 크기가 필요합니다. 내 최종 목표는이 배열을 주요 기능에서 인쇄 할 수 있습니다.
도와주세요. 나는이 멤버 변수의 새로운 수준의 초기화의의 처리 ++ g의 버그라고 생각 덕분에 .. 내 이상은이 웹 사이트에서 제공하지만 난 그 의견에 따라 경찰 http://thenewcpp.wordpress.com/2011/11/23/variadic-templates-part-1-2/
그 멤버 초기화 구문을 지원하지 않는 컴파일러처럼 소리 (올바른 선언 아마 어쨌든
static constexpr std::size_t size
될 것이다, 그래서 물론, 크기는 ...이 문제를 피하고, 런타임에 변경할 수 없습니다) . –gcc의 버그처럼 보입니다. clang이 컴파일합니다. –
[clang ++] (http://coliru.stacked-crooked.com/a/33375a8a3566ce4f)는 컴파일하지만 [g ++]는 컴파일하지 않습니다 (http://coliru.stacked-crooked.com/a/5f820aa2bce32acb) –