2012-06-22 8 views
4

현재 MSVC 2012 RC에 std :: thread 구현을위한 std :: thread에 대한 최대 인수가 있습니다.MSVC 2012 RC std :: thread 구현의 인수 최대 개수?

이 코드와 MSVC와 g ++ 모두 잘 컴파일 -std = C + +0 :

std::thread t = std::thread(printf, "%d, %d, %d, %d, %d", 1, 2, 3, 4, 5); 
t.join(); 

error C2661: 'std::thread::thread' : no overloaded function takes 7 arguments

:
std::thread t = std::thread(printf, "%d, %d, %d, %d", 1, 2, 3, 4); 
t.join(); 

그러나 6 개 이상의 인수에 대한

는 MSVC는 오류를 반환

어쨌든 의도 된 것입니까? 아니면 MSVC 구현의 버그일까요? MSVC에 아직 variadic 템플릿을 지원하지 않기 때문입니까?

답변

3

MSVC2010에는 가변 템플릿이 없으므로 전처리 기의 도움으로 구현됩니다.

#define을 지원하는 인수의 수를 설정할 수 있다고 생각합니다. 나중에 집에 돌아 왔을 때 확인할 수 있습니다.

편집 : 난 그냥이 실현

은 2012 버전입니다. VS connect bug report에서 읽을 수 있듯이 여전히 가변적 인 템플릿을 지원하지 않습니다.

+0

고마워요! 전처리 기 인수는 http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx에 따라 _VARIADIC_MAX입니다. 그래도 최대 10 개의 인수가 있습니다. – nebw