클래스에 operator[]가 존재하는지 확인해주는 클래스를 만들고 있는데
HasOperatorIndex에 A 클래스를 던져주면 true값을 제대로 반환해줌
근데 B처럼 operator[]가 여러개 오버로딩된 상태에선 false를 반환하더라;;
뭐가 잘못된건지 고수들의 조언을 좀 구함...
추가: 상황상 c++20을 못써서 c++17로 구현해야함...
추가2: decltype comma operator trick써서 SFINAE적용하니까 잘 되네요 조언해주신분들 다들 ㄳㄳ
해당 댓글은 삭제되었습니다.
나도 concept쓰고 싶었는데 크로스플랫폼 지원해야해서 지금 C++20을 못씀ㅠ
concept
static_cast를 이용해 어떤 오버로딩된 메소드의 포인터인지 애매함을 없애주면 될것 같은뎅
근데 이게 된다쳐도 각 오버로딩된 메소드에 대해 각각 있는지 검사하는 템플릿을 만들어야할테니 짜증날듯
static_cast[int (_Type2::*)(int) const](&_Type2::operator[]) 템플릿 꺽쇠 짤려서 []로 대신 씀
false_type/true_type을 이용한 방법은
https://stackoverflow.com/a/9154394
이거 참고하면 될듯 링크 리플의 하단
이 방법 c++ template guide 최신판 책에 좀더 깔끔하게 적혀있었던걸로 기억