Я думал о следующем. Рассмотрим два файла:
A.cpp:
template<class T> void g(T) {}
inline void f() { g(1); }
Б.цпп:
template<class T> void g(T) {}
void g(int) {}
inline void f() { g(1); }
Без void g(int) {}
эта программа действительна на 100%. С void g(int) {}
g(1)
преобразуется в версию шаблона в A.cpp и в версию без шаблона в B.cpp.
Нарушает ли эта программа ODR? Почему?
include
:/ - person Matthieu M.   schedule 16.05.2011