#include <iostream>
template<typename T>
bool is_one_of(T const value, T const value1, T const ... values) {
return value == value1 || is_one_of(value, values);
}
template<typename T>
bool is_one_of(T const value, T const value1) {
return value == value1;
}
int main() {
std::cout << is_one_of<int>(1, 2);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KYm9vbCBpc19vbmVfb2YoVCBjb25zdCB2YWx1ZSwgVCBjb25zdCB2YWx1ZTEsIFQgY29uc3QgLi4uIHZhbHVlcykgewogICAgcmV0dXJuIHZhbHVlID09IHZhbHVlMSB8fCBpc19vbmVfb2YodmFsdWUsIHZhbHVlcyk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CmJvb2wgaXNfb25lX29mKFQgY29uc3QgdmFsdWUsIFQgY29uc3QgdmFsdWUxKSB7CiAgICByZXR1cm4gdmFsdWUgPT0gdmFsdWUxOwp9CgppbnQgbWFpbigpIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgaXNfb25lX29mPGludD4oMSwgMik7Cn0K
prog.cpp:4:59: error: expansion pattern ‘const T’ contains no argument packs
bool is_one_of(T const value, T const value1, T const ... values) {
^~~~~~
prog.cpp: In function ‘bool is_one_of(T, T)’:
prog.cpp:5:48: error: ‘values’ was not declared in this scope
return value == value1 || is_one_of(value, values);
^~~~~~
prog.cpp:5:48: note: suggested alternative: ‘value’
return value == value1 || is_one_of(value, values);
^~~~~~
value
prog.cpp: At global scope:
prog.cpp:9:6: error: redefinition of ‘template<class T> bool is_one_of(T, T)’
bool is_one_of(T const value, T const value1) {
^~~~~~~~~
prog.cpp:4:6: note: ‘template<class T> bool is_one_of(T, T)’ previously declared here
bool is_one_of(T const value, T const value1, T const ... values) {
^~~~~~~~~