Я пытаюсь понять, почему следующее сообщение об ошибке:
class Foobar {
public:
static void do_something();
};
static void Foobar::do_something() {} // Error!
int main() {
Foobar::do_something();
}
Эти ошибки с "error: невозможно объявить функцию-член" static void Foobar:: do_something() "иметь статическую связь" в g++, а "ошибка:" статический "может быть указан только внутри определения класса" в clang++.
Я понимаю, что способ исправить это - удалить "статический" в определении do_something в строке 6. Однако я не понимаю, почему это проблема. Это обыденная причина, например, "диктует грамматика С++" или что-то более сложное происходит?