C++相談室 part98
■ このスレッドは過去ログ倉庫に格納されています
0148デフォルトの名無しさん
2012/09/02(日) 22:25:54.93main 関数内の f2 を constexpr にするとコンパイルが通りません。
何が問題なのか教えていただけないでしょうか。
#include <iostream>
#include <initializer_list>
struct Foo {
constexpr Foo() : p0(), p1() {}
constexpr Foo(std::initializer_list<int> list) : p0(*list.begin()), p1(*(list.begin()+1)) {}
constexpr Foo(const Foo& bb) : p0(bb.p0), p1(bb.p1) {}
int p0;
int p1;
};
constexpr Foo operator | (const Foo lhs, const Foo rhs) {
return Foo{lhs.p0 | rhs.p0, lhs.p1 | rhs.p1};
}
int main() {
constexpr Foo f0{1,2};
constexpr Foo f1{4,8};
const Foo f2(f0 | f1); // OK
// constexpr Foo f2(f0 | f1); // NG
std::cout << f2.p0 << std::endl;
std::cout << f2.p1 << std::endl;
}
■ このスレッドは過去ログ倉庫に格納されています