我正在写一个模板方法,它有很多专业。
class FieldValue
{
public:
...
template< typename T >
void Set( const T& value );
...
};
Run Code Online (Sandbox Code Playgroud)
其中之一是:
template <>
void FieldValue::Set< const char* >( const char* const& value )
{
...
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试打电话时
FieldValue fieldValue;
fieldValue.Set( "literal string" );
Run Code Online (Sandbox Code Playgroud)
它需要一个const char[14]长度为的专业化,而"literal string"不是一个const char*
是否有任何解决方法而无需将其转换为const char*?
更新
在 Rakete1111 的推荐之后,这就是我所做的:
class FieldValue
{
public:
...
template< typename T >
void Set( const T& value );
template< std::size_t N >
void Set( const …Run Code Online (Sandbox Code Playgroud) 有人可以解释为什么会这样吗?
我创建了一个标头交换并将其绑定到三个具有不同参数的队列,如下所示:
然后我尝试发布一条消息,其中任何格式为 pdf 的队列都会收到它,如下所示:
但是交换似乎无法将其路由到正确的队列,因为我收到以下消息:
由于我找不到和我有同样问题的人,这可能是我在这里做错了
请注意,例如,如果我发送x-match:all,format: pdf和type: report,队列test-queue-A正常获取