t.n
은 컴파일 타임 상수가 아니므로이 코드는 clang에 의해 거부되었습니다.constexpr 멤버를 static_assert에 사용할 수없는 이유는 무엇입니까?
template<int N>
struct s{
constexpr static int n = N;
};
template<typename T>
void test(T& t){
static_assert(t.n == 1);
}
int main(){
s<1> str;
test(str);
}
하지만 g ++에게 맡기십시오.
표준 호환 동작은 무엇입니까?
또 하나 궁금한 점은 test
의 인수를 T& t
에서 T t
으로 변경하면이 두 가지가 모두 구현된다는 것입니다. const에 대해 변경된 사항은 무엇입니까?
(I 제목이 제대로이 문제를 설명하거나 상세하지 않을 수 있습니다 무서워. 나에게 더 적합한 제목을주고 자유롭게)