Нарушение ODR, когда поиск по имени находит другое объявление

Я думал о следующем. Рассмотрим два файла:

A.cpp:

template<class T> void g(T) {}

inline void f() { g(1); }

B.cpp:

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? Почему?

5
задан ybungalobill 16 May 2011 в 07:35
поделиться