История изменений
Исправление
wota,
(текущая версия)
:
~$ cat 1.cpp
#include <cstdint>
struct Int
{
constexpr Int( int n ) : n_( n > 100 ? (intptr_t) "n > 100!!!11" : n ) {}
int n_;
};
int main()
{
constexpr Int n1( 10 ); // OK
constexpr Int n2( 200 ); // Fail
}
~$ g++ -std=c++11 1.cpp
1.cpp: In function ‘int main()’:
1.cpp:14:27: error: ‘const Int{((int)((long int)"n > 100!!!11"))}’ is not a constant expression
constexpr Int n2( 200 ); // Fail
^
вот проверка, которая сработает при компиляции, а у тебя молча все компилируется
Исправление
wota,
:
~$ cat 1.cpp
#include <cstdint>
int x = 1;
struct Int
{
constexpr Int( int n ) : n_( n > 100 ? (intptr_t) "n > 100!!!11" : n ) {}
int n_;
};
int main()
{
constexpr Int n1( 10 ); // OK
constexpr Int n2( 200 ); // Fail
}
~$ g++ -std=c++11 1.cpp
1.cpp: In function ‘int main()’:
1.cpp:14:27: error: ‘const Int{((int)((long int)"n > 100!!!11"))}’ is not a constant expression
constexpr Int n2( 200 ); // Fail
^
вот проверка, которая сработает при компиляции, а у тебя молча все компилируется
Исходная версия
wota,
:
~$ cat 1.cpp
#include <cstdint>
struct Int
{
constexpr Int( int n ) : n_( n > 100 ? (intptr_t) "n > 100!!!11" : n ) {}
int n_;
};
int main()
{
constexpr Int n1( 10 ); // OK
constexpr Int n2( 200 ); // Fail
}
~$ g++ -std=c++11 1.cpp
1.cpp: In function ‘int main()’:
1.cpp:14:24: error: ‘const Int{((int)((long int)"n > 100!!!11"))}’ is not a constant expression
constexpr Int n2( 200 ); // Fail
вот проверка, которая сработает при компиляции, а у тебя молча все компилируется