the code of the ::template example, but I don't know exactly what it means. I know that the use of ::template in this example is completely optional, whatever it means, but I'm really wondering what its meaning is
#include <iostream>
void bar() {
std::cout << 1;
}
struct S {
template <auto Fn>
static auto foo() {
return Fn();
}
};
template <typename T>
void foobar(T f) {
f();
}
int main() {
foobar(S::template foo<bar>);
return 0;
}