template header should be marked pragma once
template source should import header