이 코드의 잘못된 점은 무엇입니까? VS2013의 변형 템플릿 해상도 - 오류 C3520
enum LogLevel {
LogLevel_Error = 1,
LogLevel_Warning = 2,
LogLevel_Info = 3,
LogLevel_Debug = 4
};
LogLevel GetLogLevel() {return LogLevel_Debug;};
void Write(const std::string& message) {};
void Write(LogLevel level, std::stringstream& ss) {
if (level > GetLogLevel())
return;
Write(ss.str());
}
template<typename Arg> void Write(LogLevel level, std::stringstream& ss, Arg arg) {
if (level > GetLogLevel())
return;
ss << arg;
Write(ss.str());
}
template<typename First, typename... Rest> void Write(LogLevel level, std::stringstream& ss, First first, Rest... rest) {
if (level > GetLogLevel())
return;
ss << first;
Write(level, ss, rest); // Error C3520, see below
}
Write(std::stringstream(), "Hello", (const char*)" World!", 1);
나는
just as in MSDN 로깅을위한 가변/재귀 템플릿을 만들려고하지만, 난 그냥 오류 C3520 (
C3520: 'P' : parameter pack must be expanded in this context.
)를 제거 할 수 없습니다. 내가 잘못하고있는 일이 있습니까, 아니면 (신이 금지 한) 컴파일러 버그입니까?
오류 C3520은 무엇인가? –
조금 더 자세히 설명해주세요! 문자 그대로 질문에 상태 오류 메시지를 표시하고 오류가 발생한 위치에 줄을 표시하십시오. –
질문에 명확히 설명되어 있습니다. 죄송합니다. 통지에 너무 좌절했습니다. – DarkWanderer