Boost C++ Libraries of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for an old version of Boost. Click here to view this page for the latest version.


// Copyright (c) 2013-2014 Kyle Lutz <>
// Distributed under the Boost Software License, Version 1.0
// See accompanying file LICENSE_1_0.txt or copy at
// See for more information.


#include <exception>
#include <sstream>
#include <string>

namespace boost {
namespace compute {

/// \class unsupported_extension_error
/// \brief Exception thrown when attempting to use an unsupported
///        OpenCL extension.
/// This exception is thrown when the user attempts to use an OpenCL
/// extension which is not supported on the platform and/or device.
/// An example of this is attempting to use CL-GL sharing on a non-GPU
/// device.
/// \see opencl_error
class unsupported_extension_error : public std::exception
    /// Creates a new unsupported extension error exception object indicating
    /// that \p extension is not supported by the OpenCL platform or device.
    explicit unsupported_extension_error(const char *extension) throw()
        : m_extension(extension)
        std::stringstream msg;
        msg << "OpenCL extension " << extension << " not supported";
        m_error_string = msg.str();

    /// Destroys the unsupported extension error object.
    ~unsupported_extension_error() throw()

    /// Returns the name of the unsupported extension.
    std::string extension_name() const throw()
        return m_extension;

    /// Returns a string containing a human-readable error message containing
    /// the name of the unsupported exception.
    const char* what() const throw()
        return m_error_string.c_str();

    std::string m_extension;
    std::string m_error_string;

} // end compute namespace
} // end boost namespace