quench warnings (closes #69)
diff --git a/include/pybind11/attr.h b/include/pybind11/attr.h
index 9a646cb..757b1cb 100644
--- a/include/pybind11/attr.h
+++ b/include/pybind11/attr.h
@@ -255,19 +255,19 @@
 template <typename... Args> struct process_attributes {
     static void init(const Args&... args, function_record *r) {
         int unused[] = { 0, (process_attribute<typename std::decay<Args>::type>::init(args, r), 0) ... };
-        (void) unused;
+        (void) unused; (void) r;
     }
     static void init(const Args&... args, type_record *r) {
         int unused[] = { 0, (process_attribute<typename std::decay<Args>::type>::init(args, r), 0) ... };
-        (void) unused;
+        (void) unused; (void) r;
     }
     static void precall(handle fn_args) {
         int unused[] = { 0, (process_attribute<typename std::decay<Args>::type>::precall(fn_args), 0) ... };
-        (void) unused;
+        (void) unused; (void) fn_args;
     }
     static void postcall(handle fn_args, handle fn_ret) {
         int unused[] = { 0, (process_attribute<typename std::decay<Args>::type>::postcall(fn_args, fn_ret), 0) ... };
-        (void) unused;
+        (void) unused; (void) fn_args; (void) fn_ret;
     }
 };
 
diff --git a/include/pybind11/pybind11.h b/include/pybind11/pybind11.h
index 9fecaa9..25e25ca 100644
--- a/include/pybind11/pybind11.h
+++ b/include/pybind11/pybind11.h
@@ -22,6 +22,9 @@
 #  pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
 #  pragma GCC diagnostic ignored "-Wunused-but-set-variable"
 #  pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#  if __GNUC__ >= 4
+#    pragma GCC diagnostic ignored "-Wno-invalid-offsetof"
+#  endif
 #endif
 
 #include "attr.h"