어떻게 주장 할 수 있습니까, 인수없이 인수 noexcept입니까? 감사.아무런 인수없이 인수 없음
답변
당신이 요구하는지 가정 :
가 어떻게 함수를 호출하지 않고
noexcept
것을 주장 할 수 있는가?
noexcept
지정자가 오버로드간에 다를 수 있기 때문에 대답을 할 수 없습니다. 예 :
int a(int) noexcept;
int a(int, int);
// What would `noexcept(a)` mean?
나는이 사용법 #include
당신이 wandbox 또는하여 noexcept 지정자를 참고 @MartinAyvazyan? –
당신이 (가정에 대한 @VittorioRomeo 덕분에) 요구하고 가정 :
내가 함수를 호출하지 않고 noexcept라고 주장 할 수 있습니까?
피연산자가 평가되지 않은 피연산자이기 때문에 noexcept
연산자를 사용할 수 있습니다. 다른 측면에서
,이 작업을 수행 할 수 있습니다
void f(int) noexcept { }
void f(int, int) { }
int main() {
static_assert(noexcept(f(0)), "!");
static_assert(not noexcept(f(0, 0)), "!");
}
f
이 어떤 경우 호출되지 않습니다, 그는 평가되지 않은 피연산자의 (나 가정 해 봅시다) 성격입니다.
가장 흥미로운 부분은 변수로 인수를 사용할 필요가없고 변수를 구성하는 방법을 모르는 경우 std::declval
과 결합 할 수 있다는 것입니다. 예를 들어
: 나는 그것이 기본 생성자가없는 경우에도, S
를 구성 아무것도 통과하지 않아도
#include<utility>
struct S { S(int) {} };
void f(S) noexcept { }
int main() {
static_assert(noexcept(f(std::declval<S>())), "!");
}
참고.
일반적으로 은 아무런 인수도 전달하지 않아도됩니다..
일반적으로 인수를 지정하지 않고 함수를 지정할 수 없습니다. 동일한 이름의 다중 오버로드가있을 수 있으며, 일부는 noexcept이고 다른 것은 오버플로가 될 수 있습니다.#INCLUDE –