CGAL also comes with the CORE library, which provide the operations you need.
Here is some code (provided by the OP himself) to compute that sin and cos exactly:
#include <utility>
#include <CGAL/CORE_Expr.h>
#include <CGAL/Polynomial.h>
#include <CGAL/number_utils.h>
typedef CORE::Expr AA;
typedef CGAL::Polynomial<AA> Polynomial;
// return sin(θ) and cos(θ) for θ = 2π/n
static std::pair<AA, AA> sin_cos(unsigned short n) {
// We actually use -x instead of x since root_of will give the k-th
// smallest root but we want the second largest one without counting.
Polynomial x{CGAL::shift(Polynomial(-1), 1)}, twox{2*x};
Polynomial a{1}, b{x};
for (unsigned short i = 2; i <= n; ++i) {
Polynomial c = twox*b - a;
a = b;
b = c;
}
a = b - 1;
AA cos = -CGAL::root_of(2, a.begin(), a.end());
AA sin = CGAL::sqrt(AA(1) - cos*cos);
return std::make_pair(sin, cos);
}