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.
34 lines
1017 B
C++
34 lines
1017 B
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 fill(const T& u);
|
|
|
|
#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 = {};
|
|
// expected-error-re@array:* {{static_assert failed {{.*}}"cannot fill zero-sized array of type 'const T'"}}
|
|
c.fill(5.5); // expected-note {{requested here}}
|
|
}
|
|
|
|
return 0;
|
|
}
|