둘 다 컴파일 타임임. SFINAE는 컴파일러가 우선순위에 따라 타입 대입하다 성공하는 게 instantiation되는거고. 계산되는 시점이 다르다는게 뭘 의미하는거임?? 어차피 둘 다 evaluation이라는 점에선 뭐가 먼저고 나중이고 할 게 없음. 근데 constexpr 함수는 constexpr 컨텍스트에서는 컴파일 타임에 계산되는게 보장되지만(당연히 그래야할거고), constexpr 컨텍스트가 아니라면 런타임에 계산할 수도 있음.
kukyakya(143.248)2016-02-26 20:06
지금 내가 술마셔서 내가 헷갈리는걸지 모르는데 리터럴은 컴파일전에 처리한다는데 프로그램에서 쓰는 문자열을 constexpr로 평가하려면 이미 컴파일에 돌입해버려서
89일후전역(122.35)2016-02-26 20:10
흠 아무튼 컴파일 시간이고 컴파일중 가장 먼저 처리한다니까 다른곳에서 문제될건 없는데 이제와서 보니까 리터럴 빼는게 헷갈림
생각해보니까 컴파일수가 없는데 재귀템플릿에서 나열자쓰는것도 되고
템플릿이 컴파일되는건 컴파일 타임 다형성에 대해서 알아보세요 'ㅅ'
궁금한건 실제 인스턴스화될때 코드형태로 인스턴스화 되는건지 아니면 바이너리가 되는지. 느낌은 전자인데
전처리랑 컴파일 사이에 코드생성하는게 있어야할것같은데
복무신조 한번 외치시면 알려 드리겠습니다.
해본지 20개월지나서 까먹었다
사실 언제 인스턴스화 되는지 잘 모르겠습니다. 미안합니다.
인스턴트 음시 좋아하지마라.... 몸에 안좋다..
당연하지 시바 이딴걸 쳐묻노
http://en.cppreference.com/w/cpp/language/translation_phases
phase7, 8이랑 notes 참고
혹시 템플릿 인스턴스가 전처리기에서 처리되나 컴파일러에서 처리되나 묻는거였으면 당연히 컴파일러지
ㄴㄴ 컴파일이랑 구분되는 다른 단계가 있나 궁금했음 SFINAE같은걸 그냥 컴파일 뚝딱하는게 아닐거같아서
constexpr가튼건 리터럴로 취급하는게 맞을것같은데 여긴안써있네 고럼 컴파일 전인가
그럼 빌드타임 계산용도로 재귀 템플릿을 쓰면 재귀한 constexpr이랑 계산되는 시점이 미묘하게 다른듯
둘 다 컴파일 타임임. SFINAE는 컴파일러가 우선순위에 따라 타입 대입하다 성공하는 게 instantiation되는거고. 계산되는 시점이 다르다는게 뭘 의미하는거임?? 어차피 둘 다 evaluation이라는 점에선 뭐가 먼저고 나중이고 할 게 없음. 근데 constexpr 함수는 constexpr 컨텍스트에서는 컴파일 타임에 계산되는게 보장되지만(당연히 그래야할거고), constexpr 컨텍스트가 아니라면 런타임에 계산할 수도 있음.
지금 내가 술마셔서 내가 헷갈리는걸지 모르는데 리터럴은 컴파일전에 처리한다는데 프로그램에서 쓰는 문자열을 constexpr로 평가하려면 이미 컴파일에 돌입해버려서
흠 아무튼 컴파일 시간이고 컴파일중 가장 먼저 처리한다니까 다른곳에서 문제될건 없는데 이제와서 보니까 리터럴 빼는게 헷갈림
http://lgstar.tk
커뮤니티 사이트 입니다 많은 이용 부탁 드립니다. - DCW