We had a workaround because GCC 5 does not evaluate static assertions that are dependent on template parameters. This commit removes the workaround and marks the corresponding tests as unsupported with GCC 5. This has the benefit of bringing the new and the old test formats closer without having to carry a workaround for an old compiler in the new test format.
35 lines
1.0 KiB
C++
35 lines
1.0 KiB
C++
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// GCC 5 does not evaluate static assertions dependent on a template parameter.
|
|
// UNSUPPORTED: gcc-5
|
|
|
|
// <array>
|
|
|
|
// void swap(array& a);
|
|
|
|
#include <array>
|
|
#include <cassert>
|
|
|
|
// std::array is explicitly allowed to be initialized with A a = { init-list };.
|
|
// Disable the missing braces warning for this reason.
|
|
#include "disable_missing_braces_warning.h"
|
|
|
|
int main(int, char**) {
|
|
{
|
|
typedef double T;
|
|
typedef std::array<const T, 0> C;
|
|
C c = {};
|
|
C c2 = {};
|
|
// expected-error-re@array:* {{static_assert failed {{.*}}"cannot swap zero-sized array of type 'const T'"}}
|
|
c.swap(c2); // expected-note {{requested here}}
|
|
}
|
|
|
|
return 0;
|
|
}
|