#include <iostream>
#include <bitset>
#include <boost/lambda/lambda.hpp>
#include <boost/cstdint.hpp>
int main() {
double d=1.0;
std::bitset<64> b(*((boost::int64_t *) &d));
namespace bl=boost::lambda;
for (int i=0; i < b.size(); ++i)
std::cout << b[i];
}

doubleのビット表現をbitsetにぶちこむ為に一時変数使ってポインタのキャストしてるんですが
こういう面倒臭いことせずに
std::bitset<64> b( foo(1.0) );
みたいに一発でできる方法ってないですかね?