Следующий код не компилируется по понятным причинам, а именно, что Foo пытается получить доступ к частному члену Bar. Однако, если вы раскомментируете / комментируете строки, помеченные, делая Foo шаблоном, он компилируется и выводит 42. Что мне здесь не хватает? Почему это работает? Мне кажется, это не должно быть.
Спасибо за вашу помощь.
#include <iostream>
class Bar {
private:
static const int x = 42;
};
//template <int> // uncomment me
struct Foo {
static const int i = Bar::x;
};
int main(int argc, char* argv[]) {
std::cout << Foo::i << std::endl; // comment me
//std::cout << Foo<0>::i << std::endl; // uncomment me
}