Почему ошибка при выполнении sizeof()?
Все честно - на момент обращения к sizeof компилятор не располагает полным объявлением класса test1.
В C++ в теле класса следует располагать только шаблоны. 
**про inline-функции** - inline - это только *совет компилятору*, а не команда "засунь тело функции на место вызова"
Потому что sizeof(test1) используется до определения класса test1.если размещаю эту функцию вне самого класса (int test::size()) то все нормально
А попробуй разместить её выше определения class test1.