GCC 4.5 appears to fail when using sizeof(member-of-templated-type) inside a template parameter.
I have tested the Debian gcc-snapshot 20090923-1 amd64 package, 20091010-1 i386, and Ubuntu gcc-snapshot 20091018-1 amd64. All exhibit the same behavior. g++-4.4 works fine, however. Changing to "sizeof(m_foo)" to "sizeof(T)" also fixes the problem. File /tmp/test.cpp: ===CUT=== template<int X> struct Bar { }; template<typename T> class Foo { T m_foo; void crash() { Bar<sizeof(m_foo)> bar; } }; ===CUT=== $ g++ -c /tmp/test.cpp /tmp/test.cpp: In member function 'void Foo<T>::crash()': /tmp/test.cpp:8:26: internal compiler error: Segmentation fault Please submit a full bug report, with preprocessed source if appropriate. See <file:///usr/share/doc/gcc-snapshot/README.Bugs> for instructions. -- Summary: [4.5 Regression] segfault with sizeof in template parameter Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: foom at fuhm dot net GCC host triplet: x86_64-linux-gnu GCC target triplet: x86_64-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41863