//  Copyright (C) 2011 John Maddock
//  Use, modification and distribution are subject to the
//  Boost Software License, Version 1.0. (See accompanying file
//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

//  See http://www.boost.org/libs/config for most recent version.

//  MACRO:         BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
//  TITLE:         C++0x unified initialization syntax unavailable
//  DESCRIPTION:   The compiler does not support C++0x unified initialization syntax: see http://en.wikipedia.org/wiki/C%2B%2B0x#Uniform_initialization

#include <string>

namespace boost_no_cxx11_unified_initialization_syntax {

struct BasicStruct
{
   int x;
   double y;
};

struct AltStruct
{
public:
   AltStruct(int x, double y) : x_{x}, y_{y} {}
   int X() const { return x_; }
   double Y() const { return y_; }
private:
   int x_;
   double y_;
};

struct IdString
{
   std::string name;
   int identifier;
   bool operator == (const IdString& other)
   {
      return identifier == other.identifier && name == other.name;
   }
};

IdString get_string()
{
   return {"SomeName", 4}; //Note the lack of explicit type.
}

int test()
{
   BasicStruct var1{5, 3.2};
   AltStruct var2{2, 4.3};
  (void) var1;
  (void) var2;

   IdString id{"SomeName", 4};
   return id == get_string() ? 0 : 1;
}

}
