From: Richard Smith Date: Fri, 13 May 2016 06:42:55 +0000 (+0000) Subject: Extend this test to also be valid in C++14. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3d47197c64ef2e0be44f7f83e6c685077fb595a7;p=clang Extend this test to also be valid in C++14. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@269397 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/SemaCXX/constexpr-nqueens.cpp b/test/SemaCXX/constexpr-nqueens.cpp index b158d6e4b6..47133a2934 100644 --- a/test/SemaCXX/constexpr-nqueens.cpp +++ b/test/SemaCXX/constexpr-nqueens.cpp @@ -10,26 +10,26 @@ struct Board { constexpr Board(const Board &O) : State(O.State), Failed(O.Failed) {} constexpr Board(uint64_t State, bool Failed = false) : State(State), Failed(Failed) {} - constexpr Board addQueen(int Row, int Col) { + constexpr Board addQueen(int Row, int Col) const { return Board(State | ((uint64_t)Row << (Col * 4))); } - constexpr int getQueenRow(int Col) { + constexpr int getQueenRow(int Col) const { return (State >> (Col * 4)) & 0xf; } - constexpr bool ok(int Row, int Col) { + constexpr bool ok(int Row, int Col) const { return okRecurse(Row, Col, 0); } - constexpr bool okRecurse(int Row, int Col, int CheckCol) { + constexpr bool okRecurse(int Row, int Col, int CheckCol) const { return Col == CheckCol ? true : getQueenRow(CheckCol) == Row ? false : getQueenRow(CheckCol) == Row + (Col - CheckCol) ? false : getQueenRow(CheckCol) == Row + (CheckCol - Col) ? false : okRecurse(Row, Col, CheckCol + 1); } - constexpr bool at(int Row, int Col) { + constexpr bool at(int Row, int Col) const { return getQueenRow(Col) == Row; } - constexpr bool check(const char *, int=0, int=0); + constexpr bool check(const char *, int=0, int=0) const; }; constexpr Board buildBoardRecurse(int N, int Col, const Board &B); @@ -54,7 +54,7 @@ constexpr Board buildBoard(int N) { constexpr Board q8 = buildBoard(8); -constexpr bool Board::check(const char *p, int Row, int Col) { +constexpr bool Board::check(const char *p, int Row, int Col) const { return *p == '\n' ? check(p+1, Row+1, 0) : *p == 'o' ? at(Row, Col) && check(p+1, Row, Col+1) :