Да, Вы используете методы экземпляра. Статические методы в основном говорят, "Существует один способ выполнить эту функциональность - это не полиморфно". Насмешка полагается на полиморфизм.
Теперь, если Ваши статические методы логически не заботятся, о какой реализации Вы используете, они могли бы быть в состоянии взять интерфейсы в качестве параметров, или возможно работать, не взаимодействуя с состоянием вообще - но иначе необходимо использовать экземпляры (и вероятно внедрение зависимости для проводного соединения всего вместе).
Определение типа POD было ослаблено в C ++ 0A.
Тип может иметь нетривиальный конструктор, но может иметь тривиальный оператор присваивания.
Например,
struct X
{
X() : y( -1 ) {}
X( int k, int v ) : y( k * v ) {}
int y;
};
] X можно было бы скопировать в память, но не тривиально.