如何让CGO查找和使用C ++标准库头文件

I'm attempting to implement some C++ code that takes advantage of opencv2 and zbar in my Go code. I'm including it in my file as such:

// #cgo CXXFLAGS: -I/usr/local/include/opencv -I/usr/include/opencv2 
// #cgo LDFLAGS: -lstdc++ -L/usr/local/lib/ -lopencv_core -lopencv_imgproc  -lopencv_video -lopencv_highgui -lopencv_ml -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_stitching -lzbar
// #include "/home/anon/Documents/Golang/Decoder/decode.cpp"
import "C"

In the hpp file containing decodes declaration I have:

#include <zbar.h>
#include <opencv2/opencv.hpp>
#include <vector>

#define STR(s) #s

typedef struct {
    string type;
    string data;
    vector <cv::Point> location;
} decodedObject;


string decode(string im);

The point of failure has consistently been when a C++ header file for the standard library is included. In this case it gets through zbar.h just fine, but when it gets to opencv2 it fails with:

/usr/include/opencv2/video/background_segm.hpp:47:16: fatal error: list: No such file or directory

How should I go about getting cgo to locate the standard library files? If it's using g++ as the documentation says it should be, then it should be able to find and link them, but this isn't happening.