여러 문자열이나 char const *의 발견을 확인할 클래스를 만들고 싶었습니다. "무언가"가 상수이기 때문에 기대 했었습니다. 정적 const 매개 변수 .. 불행히도 그게 작동하지 않았다 .. 아무도 그 클래스와 함께 잘못 본거야?Variadic 템플릿 char const *
Finder<"firstStr", "secondStr"> finder;
또는
static const char const* s_first = "first";
static const char const* s_second = "second";
Finder<s_first, s_second> finder;
내가 점점 오전 오류입니다 :
template<char const*... Args_t>
struct Finder {
Finder() {
Add<Args_t...>();
m_len = sizeof...(Args_t);
m_count = 0;
}
void Append(char const* key, string val) {
Found_t::iterator found = m_founds.find(key);
if (key == m_founds.end()) return; // irrelevant
if (!found->second.empty()) {
stringstream str;
str << "Found an already existing key: [" << key << ']' << endl;
throw logic_error(str.str());
}
found ->second = std::move(val);
++m_count;
}
bool Complete() { return m_len == m_count; }
private:
template<char const* First_t, char const*... Rest_t> void Add() {
m_founds.insert(Found_t::value_type(First_t, ""));
Add<Rest_t...>();
}
template<char const* Last_t> void Add() {
m_founds.insert(Found_t::value_type(Last_t, ""));
}
typedef std::map<char const*, string> Found_t;
Found_t m_founds;
int m_len;
int m_count;
};
는 다음 주에 내가 좋아하는 뭔가를 시도 표현식이 상수 값이 있어야합니다
정확히 작동하지 않는 것은 무엇입니까? – stijn
아래 질문의 본문에 오류를 추가했습니다. – Alon
이 수업에서 무엇을하고 싶니? – stijn