반응형
원본 : https://quuxplusone.github.io/blog/2021/01/13/conversion-operator-lookup/
친구의 페이스북에 올라온 C++ 컴파일러 구분하기 란 글을 보았다.
역시 난 C++을 모르는듯 ㅎㅎ
여기서 핵심은 U 와 T가 무엇으로 lookup되어야 하는지를 정하는게 표준에 있는데
컴파일러가 제멋대로 구현했다는 것 같다.
U, T 모두에 대해서 gcc만 제대로 A scope으로 룩업한다고...
code link : https://godbolt.org/z/jo3dc4
struct T1 {}; struct T2 {};
struct U1 {}; struct U2 {};
struct A {
using T = T1;
using U = U1;
operator U1 T1::*();
operator U1 T2::*();
operator U2 T1::*();
operator U2 T2::*();
};
inline auto which(U1 T1::*) { return "gcc"; }
inline auto which(U1 T2::*) { return "icc"; }
inline auto which(U2 T1::*) { return "msvc"; }
inline auto which(U2 T2::*) { return "clang"; }
int main() {
A a;
using T = T2;
using U = U2;
puts(which(a.operator U T::*()));
}
C++ 문법을 한번 봐야겠다는 생각이 드네
반응형
'프로그래밍 언어 > C&C++' 카테고리의 다른 글
[C++11] std::enable_shared_from_this (0) | 2018.02.06 |
---|---|
[읽은 글] const correctness (0) | 2016.10.18 |
[C++11] std::function의 성능 (0) | 2015.05.29 |
GCC options (0) | 2013.12.05 |
[C++11] Range based for loop (4) | 2013.11.13 |