Как на с++11 засунуть темплейту одну и ту же строку в разных translation units?
Есть темплейт, инстанс которого надо юзать в разных файлах (например лог), и которому надо прокинуть строку конфига:
template<const char* filterLabels>
class log {
...
}
Понятно, что инстанс создается в одном месте, а в остальных объявляется через extern.
Но проблема в том, что передаваемую строку надо объявлять в хедере как inline
, простого constexpr недостаточно - валится линкер. А inline
поддерживается только от c++17.
// без inline - жопа
inline constexpr char labels[] = "foo,bar";
Есть ли какой-то хак для c++11, чтобы строки передавались, и темплейты понимали, что они про одно и то же (а не плодились, роняя линкер)?
Перемещено hobbit из general