g++4.6.3 で、constexpr を使いたいのですが、
main 関数内の 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;
}