컴파일 타임 상수 값을 기반으로하는 함수에 코드가 포함되기를 원하지만 static_if는 C++의 구문이 아닙니다.If 컴파일 타임 const 문에 대한 문
그래서 나는이
class TA {
public:
template<bool flag>
void func() {
if(flag)
a++;
}
int a;
};
int main() {
TA a;
a.func<true>();
a.func<false>();
}
같은 기능을 쓸 수 있습니다 그리고 컴파일러는 두 가지 기능을 만드는 것을 내가 보증을 갖고 싶어. 하나는 'if (flag) a ++'가 함수로 컴파일되고 하나는 그렇지 않다는 것입니다.
이 보증은 C++ 17 표준을 기반으로 할 수 있습니까? 아니면 컴파일러 공급 업체의 자비하에 있습니까?
감사합니다.
템플릿 인스턴스화는 항상 별도의 함수입니다. 'TA :: func'는'a ++'코드를 포함하지만 항상 건너 뛰겠습니까? –
aschepler
최적화가이를 처리해야하지만 템플릿을 전문화하고 각 부울 값 (true, false)을 두 번 겹쳐 쓸 수 있으므로 걱정할 필요는 없습니다. 그러나 다시 ... 조숙 한 최적화와 같은데, 당신이해서는 안된다. –