0
다음 코드는 제대로 빌드되지만 오버로드 된 템플릿 연산자는 호출되지 않습니다. 왜 그런가요? main()
함수는 x
대신 120
을 인쇄합니다.중첩 형식의 오버로드 연산자
#include <iostream>
namespace foo
{
struct bar
{
enum Type { x = 'x', y = 'y' };
};
template<typename T> std::ostream& operator<<(std::ostream& s, typename T::Type o) { return s << char(o); }
}
int main()
{
foo::bar::Type t{ foo::bar::x };
std::cout << t;
}
사실 내 코드에 여러 유형의 열거 형이 정의되어 있습니다. 나는 그들 모두에 대해 연산자 <<를 정의하지 않아도되고 싶다. – BlindDriver
@BlindDriver 작동하지 않는 이유를 이해하려면 유형 공제를 읽어야합니다. 코드 중복을 최소화하거나 한 번에 하나씩 작성하는 매크로를 작성해야합니다. – SirGuy
예, 내가 참조한 게시물을 읽고 코드가 작동하지 않는 이유를 확인하십시오. 나는 대안이 있기를 바랄 뿐이었다. 그러나 어쨌든 당신의 도움을 위해 대단히 감사합니다! – BlindDriver