CNAME's, according to RFC's, have to exist alone as they conflict with any resource record type (SOA, NS, A, TXT, etc.).
The relevant RFC's are RFC 1034 section 3.6.2 and RFC 1912 section 2.4:
http://tools.ietf.org/html/rfc1034
http://tools.ietf.org/html/rfc1912
Apexes always at least have SOA and NS that would conflict (as apexes are required to have NS and SOA for the zone (domain) to function). As a result, a CNAME at the apex will always conflict with an already existing record.
Additional Information
When doing a DIG against an APEX, it will return the IP addresses of the CNAME that's setup as the destination of the APEX. This is another reason why you can't CNAME at the APEX level.