#include <iostream>
#include <vector>
using namespace std;
template<bool IsVector = true>
struct Bar {
template<typename In>
static auto foo(In input) {
return input[0];
}
};
template<>
struct Bar<false> {
template<typename In>
static auto foo(In input) {
return input;
}
};
int main() {
cout << Bar<true>::foo(std::vector<double>{{1, 2 , 3}}) << endl;
cout << Bar<false>::foo(4.5) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8Ym9vbCBJc1ZlY3RvciA9IHRydWU+CnN0cnVjdCBCYXIgewoJdGVtcGxhdGU8dHlwZW5hbWUgSW4+CglzdGF0aWMgYXV0byBmb28oSW4gaW5wdXQpIHsKCQlyZXR1cm4gaW5wdXRbMF07Cgl9Cn07CnRlbXBsYXRlPD4Kc3RydWN0IEJhcjxmYWxzZT4gewoJdGVtcGxhdGU8dHlwZW5hbWUgSW4+CglzdGF0aWMgYXV0byBmb28oSW4gaW5wdXQpIHsKCQlyZXR1cm4gaW5wdXQ7Cgl9Cn07CgppbnQgbWFpbigpIHsKCWNvdXQgPDwgQmFyPHRydWU+Ojpmb28oc3RkOjp2ZWN0b3I8ZG91YmxlPnt7MSwgMiAsIDN9fSkgPDwgZW5kbDsKCWNvdXQgPDwgQmFyPGZhbHNlPjo6Zm9vKDQuNSkgPDwgZW5kbDsKCXJldHVybiAwOwp9