다음 코드를 고려하십시오 .
struct any
{
template <typename T>
operator T &&() const;
template <typename T>
operator T &() const;
};
int main()
{
int a = any{};
}
여기서 두 번째 변환 연산자는 과부하 해상도에 의해 선택됩니다. 왜?
지금까지 내가 그것을 이해, 두 사업자에 추론된다 operator int &&() const
및 operator int &() const
각각. 둘 다 실행 가능한 기능 세트에 있습니다. [over.match.best]를 읽는 것이 후자가 더 나은 이유를 알아내는 데 도움이되지 않았습니다.
후자가 전자보다 더 나은 기능을하는 이유는 무엇입니까?
template <typename T> operator T &&() const &&; template <typename T> operator T &() const &;
첫 번째 전화를 받도록 해