/////////////////////////////////////////////////////////////////////////////// | |
// | |
// Copyright (c) 2015 Microsoft Corporation. All rights reserved. | |
// | |
// This code is licensed under the MIT License (MIT). | |
// | |
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
// THE SOFTWARE. | |
// | |
/////////////////////////////////////////////////////////////////////////////// | |
#include <cstdlib> // for std::exit | |
#include <gsl/span> // for span | |
int operator_subscript_no_throw() | |
{ | |
int arr[10]; | |
gsl::span<int> sp { arr }; | |
return sp[11]; | |
} | |
void test_terminate() | |
{ | |
std::exit(0); | |
} | |
void setup_termination_handler() | |
{ | |
#if defined(_MSC_VER) | |
auto& handler = gsl::details::get_terminate_handler(); | |
handler = &test_terminate; | |
#else | |
std::set_terminate(test_terminate); | |
#endif | |
} | |
int main() | |
{ | |
setup_termination_handler(); | |
operator_subscript_no_throw(); | |
return -1; | |
} |