VC2005EEなのですが、以下のコードでビルドエラーになってしまします
#include <string>
#include <iostream>

struct {
 std::string operator()() {
  return "aaa";
 }
} aaa;

struct {
 std::string operator()() {
  return "bbb";
 }
} bbb;

int main(int ac, char** av) {
 std::cout << aaa() << bbb() << std::endl;
 return 0;
}

main.obj : fatal error LNK1179: ファイルが無効か、または壊れています: COMDAT '??R<unnamed-tag>@@QAE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ' を複製します。