In the regular .h/.cpp/#include way of exposing interfaces, we can put declarations in headers and definitions in source/.cpp files, with several notable exceptions:
constexprfunctions, because the compiler needs to see the implementation to evaluate them- templates, since the compiler needs to be able to instantiate templates
How does this change with modules? Are we allowed to split template/function class decls across interface/implementation modules? If not, is there still a reasonable way of splitting stuff up (akin to including a .tpp file in a header)? I know the standard advice is to "use module interfaces as you would a header, and module implementations as you would a regular source," but how strict is that rule?
Unrelated/tangent: do i split module impl/interface in two different dir trees (akin to include/src) or do i just shove everything into src?